ASP.NET MVC + Simple.Data + MySQL

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 🙂

One thought on “ASP.NET MVC + Simple.Data + MySQL

Zostaw komentarz

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s