Do dzisiejszego wpisu zainspirowała mnie aplikacja, którą współtworzymy z Tymkiem Kęstowiczem. Potrzebowaliśmy połączyć naszą aplikację napisaną w MVC z bazą danych (tu wybór padł na MySQL). Zdecydowanie chcieliśmy uniknąć strzelania z armaty do komarów – Entity Framework, nHibernate – ponieważ struktura naszej bazy była niewielka (dosłownie kilka tabel).
Po zastanowieniu się nad potencjalnymi rozwiązaniami, wybór padł na bibliotekę Simple.Data, czyli ORM bez ORM-a. Szczerze powiedziawszy, dawno nie widziałem tak prostej konfiguracji aplikacji z bazą danych. Na czym to wszystko polega?
Do Web.configa dodajemy connection string do naszej bazy danych. Następnie dodajemy referencję do biblioteki Simple.Data.Core i Simple.Data.MySql (w przypadku naszej bazy). Oprócz tego potrzebujemy referencji do MySql.Data. Po prawidłowym skonfigurowaniu zaczynamy zabawę – załóżmy, że dysponujemy w bazie danych tabelą miast – Cities. Następnie chcemy pobrać z bazy te miasta. Cała operacja wygląda w następujący sposób:
public IEnumerable<dynamic> GetAllCities() { return Database.Open().Cities.All(); }
Database.Open() otwiera połączenie z naszą wcześniej skonfigurowaną bazą danych. Następnie, po kropce wpisujemy „Cities”, które zostanie dynamicznie zresolvovane podczas wykonywania zapytania. All() jak łatwo się domyśleć, zwróci wszystkie dane z tabeli.
No dobrze. Co zrobić, gdy chcemy wyciągnąć z bazy tylko niektóre dane o zadanym parametrze? Zakładając, że każde miasto ma w bazie danych kolumnę CityCode -> dla Warszawy WAW, dla Krakowa KRK:
public dynamic GetCityByCode(string cityCode) { return Database.Open().Cities.FindBy(CityCode: cityCode); }
„CityCode:” to właśnie kolumna w naszej bazie danych, natomiast cityCode – zadany parametr, na podstawie którego wyciągamy interesujące nas miasto.
Naprawdę polecam, gdyż jest to świetne rozwiązanie dla niewielkich aplikacji. Po więcej odsyłam do pełnej dokumentacji 🙂
Jedna uwaga do wpisu “ASP.NET MVC + Simple.Data + MySQL”