Wiele baz danych do jednej aplikacji

0

Witajcie!
Mam zrealizować zadanie utworzenia klas, które będą odpowiadały za połączenie z bazą danych. Chodzi o to by użytkownik w aplikacji mógł sobie wybrać dowolną bazę. Czy ktoś z was ma może jakieś materiały na ten temat? Może ktoś robił coś podobnego?
Pozdrawiam!

0

Nie wiem czy to jest dobre rozwiązanie, ale ja przeważnie buduje ConnectionString na podstawie tego co wybierze użytkownik

public static class SQL
{
    public static string ConnectionString(string instance, string databaseName, string user, string pass)
    {
        return [email protected]"Data Source={instance};Initial Catalog={databaseName};Persist Security Info=False;User ID={user};Password={pass}";
    }
}

Możesz też zamiast stringów wrzucić tam jakiś obiekt konfiguracji

public static class SQL
{
   public static string ConnectionString(Config c)
   {
       return [email protected]"Data Source={c.Instance};Initial Catalog={c.DatabaseName};Persist Security Info=False;User ID={c.User};Password={c.Password}";
   }
}

Dalej to już sobie chyba dasz radę.

0

Ok, to w sumie dobre rozwiązanie jeśli chodzi o connectionstring. A jak później piszesz klasy do wyciągania danych? Dla każdego typu bazy danych oddzielnie?

0

W jakim sensie dla każdego typu bazy? Czyli użytkownik wybiera dowolną technologię bazodanową czy dowolną bazę danych w jednej i tej samej technologii? To spora różnica

0

Chodzi o dowolną technologię. Własnie taka klasa musi mieć unikatowe metody(abstrakcyjne), po których bazy będą mogły dziedziczyć.
Taka abstrakcja dla wszystkich typów baz by później użytkownik mógł dowolnie je podmienić.(na przykład za pomocą delegatów).

0

Chodzi o to by użytkownik w aplikacji mógł sobie wybrać dowolną bazę.

Z tego co napisałeś w poście nie wynika, że chodzi o technologie. Wyszedłem z założenia, że próbujesz tylko zmieniać bazę w tej samej technologii i jest nim MS SQL. Ja korzystam tylko z tej technologii, więc niestety nic więcej nie jestem w stanie pomóc.

0

Jasne, no faktycznie dosyć nieszczegółowo opisałem problem .

0

Z tego co wnioskuję, to chodzi Ci o ORM https://pl.wikipedia.org/wiki/Mapowanie_obiektowo-relacyjne
Poczytaj sobie na ten temat no i może o Code First http://www.entityframeworktut[...]first/what-is-code-first.aspx

0

@Deltech:
Nie chodzi mu o ORM, tylko o dynamiczne przełączanie między technologią bazodanową. Chce jedną aplikację, w której użytkownik będzie decydował czy chce się zalogować do MySQL, MS SQL, Postgre, SQLite itp itd. Pozwolić na odpowiednią konfigurację połączenia w danej technologii.

0

Nie chodzi mu o ORM, tylko o dynamiczne przełączanie między technologią bazodanową.

W takim przypadku zastosowanie ORM'a to jedyna słuszna metoda.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0