.NET i mała baza danych - jaka technologia?

0

Witam wszystkich. Nie wiedziałem czy dać tutaj czy w C# i .NET także proszę mnie śmiało linczować jak coś. Napisałem małą aplikację (o ile można to w ogóle nazwać aplikacją) do zarządzania naprawami komputerów- zupełne podstawy dla własnego użytku. Aplikacja napisana w WinForms. Aktualnie korzystam ze zwykłej bazy danych Access, nie używam nawet sterownika ODBC. Baza danych zawiera ledwie 3 tabele a sam program nie ma więcej niż 2000 linii kodu. No ale do rzeczy. Aktualnie wyciągam wymagane tabele z bazy danych i operując na DataTable tworzę obiekty, np. Repair, Note (jeden Repair może mieć wiele Notes). Oto mój kod do łączenia się z bazą danych:

OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AppDomain.CurrentDomain.BaseDirectory.ToString() + "\\RepairsData.accdb");

Cała logika do łączenia się z bazą danych siedzi w statycznej klasie DatabaseUtilities, gdzie dla każdego obiektu mam przeładowane metody, np.

        public static string DeleteRecord(Note note)
        {
            string query = string.Format("DELETE FROM [Note] WHERE ID = '{0}'", note.ID);
            return ExecuteInsertion(query);
        }

W zasadzie to skończyłem już ten programik ale zanim zacznę coś większego chciałbym wiedzieć jak wziąć się za to dobrze, bo domyślam się że moje obecne podejście nie jest najlepsze. Stąd też poniższe pytania:

  1. Jaką bazę danych powinienem użyć do małej aplikacji *biorąc pod uwagę że nie ma potrzeby instalowania serwera- baza w jednym małym pliku to najlepsze wyjście)? Czy Access to był dobry wybór?
  2. Czy System.Data.OleDb to dobry wybór czy powinienem użyć czegoś innego?
  3. Co z zapisywaniem do/wyciąganiem danych z bazy danych? Czy podejście które zastostowałem jest dobre?

Z góry dziękuję za wszelką pomoc.

Ps. Chyba najwyższy czas żebym założył konto jako że śledzę to forum od X czasu...

0

Witaj,

Możesz zastosować kilka rozwiązań np.: Microsoft SQL Server Compact, SQLite. Dodatkowo proponuję przejść na bardziej obiektowe operowanie na bazie czyli LINQ. Przykładowe zapytanie (połączenie definiuje się w configu https://www.google.pl/#q=entity+framework):

 
using (var dataContext = new DataContext())
{
    var fooData = dataContext.Foo.ToList();
    var firstItem = fooData.FirstOrDefault();
}

M.

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