devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
3 minut

Entity Framework, Visual Studio 2010 i MySQL


12.07.2010

Miałem ostatnio okazję tworzyć małą aplikacyjkę korzystającą z Entity Framework jako technologii dostępu do danych przechowywanych z MySQL. Miało być banalnie: ściągamy oficjalny “konektor” (link), instalujemy i wszystko śmiga jak pszczółka maja na polanie pełnej bzu.

Oczywiście gdyby tak było to pisanie tego posta nie miałoby sensu:). Dwa problemy, w kolejności występowania:

Integracja z Visual Studio 2010

Ku swojej radości znalazłem informację, że wraz z którąś-tam wersją connectora MySQL dodano wsparcie dla Entity Framework. No i cool. Niestety w rzeczywistości okazało się, że w najnowszej oficjalnej wersji (6.2.3) może i jest takie wsparcie, jednak… w instalatorze najwidoczniej brakuje kroku rejestrującego odpowiednie komponenty w Visualu 2010. Po kilkunastu minutach kompletnego WTFa ruszyłem mózgownicą i doszedłem do wniosku, że takie niedopatrzenie po prostu MUSIAŁO być poprawione dość szybko. I miałem rację (jak ja lubię to zdanie!). Wystarczy na stronie konektora przejść z zakładki Generally Available (GA) Releases na Development Releases i ściągnąć najnowszą wersję stamtąd (dla mnie była to 6.3.1, teraz widzę 6.3.2). Po instalacji tego komponentu w Visualu poprawnie widoczny jest provider dla MySQL.

Deployment

Po pokonaniu pierwszego problemu można radośnie zapuścić się w kod. Kolejny zonk jednak spotkał mnie, gdy wrzuciłem aplikację na docelowy serwer (Webio – BTW polecam: niskie ceny, dobra jakość i super support). Przy pierwszej próbie podłączenia do bazy Entity Framework opluło mnie obrzydliwym błędem o niezarejestrowanej DbFactory. No i miało rację: instalator connectora MySQL odpowiednio rejestruje się na poziomie machine.config, jednak hosting wcale nie musi mieć zainstalowanej takiej wersji (szczególnie bety). Rozwiązaniem po raz kolejny okazało się pomyślenie przez chwilę i dodanie do web.configa takiego wpisu (skopiowanego z machine.config):

  1:  <system.data> 
  2:          <DbProviderFactories> 
  3:              <remove invariant="MySql.Data.MySqlClient" /> 
  4:              <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
  5:          </DbProviderFactories> 
  6:  </system.data>

Oczywiście należy też dopilnować, aby w katalogu bin/ naszej aplikacji znalazły się biblioteki instalowane przez connector (w C:\Program Files (x86)\MySQL\MySQL Connector Net 6.3.1\Assemblies lub okolicach).


W ten oto sposób dwa proste dodatkowe kroki umożliwiają zastosowanie MySQL z EntityFramework w VS 2010 na hostingu, którego nie kontrolujemy w 100%.

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Notify of
Łukasz K.

Jakieś pół roku temu zmagałem się z identycznymi problemami:) Z tym że na VS2008, bo VS2010 był w wersji beta toteż Connectora do niego nie było.
Rozwiązanie jest rewelacyjne, sprawdza się w 200% – polecam! ;)

Moja książka

Facebook

Zobacz również