Zaczniemy od instalacji EF za pomocą konsoli NuGet:
W konsoli wpisujemy następujące polecenie:
Install-Package EntityFramework
Po instalacji referencje do odpowiedniej biblioteki dll zostaną automatycznie dodane do projektu.
Następnym krokiem będzie zdefiniowanie naszego modelu. W tym celu stworzymy prostą klasę przechowującą informację o użytkowniku:
Code:
Następnym krokiem jest stworzenie Contextu, za pomocą którego będziemy porozumiewali się z bazą danych:
Code:
Następnie spróbujmy wykorzystać stworzony przez nas Context aby dodać nową osobę do bazy danych:
Code:
Jeżeli zobaczymy poniższy wyjątek:
Oznacza to, iż provider ma problem z odnalezieniem serwera bazy danych. Rozwiązaniem tego problemu jest jawne podanie connection stringa do naszej bazy danych (w większości przypadków będziemy tak postępowali):
1. Do klasy dziedziczącej z DbContextu dodajemy konstruktor przyjmujący ConnectionString:
Code:
2. W App/Web configu podajemy odpowiedni connectionString:
Code:
3. Zmieniamy kod wykorzystujący DbContext:
Code:
Teraz, po uruchomieniu programu możemy zobaczyć co się stało na serwerze bazo danowym. Za pomocą MS możemy zobaczyć iż została stworzona z automatu nowa baza danych z odpowiednią tabelą, oraz dodany rekord:
Jak widać nie napisaliśmy ani jednej linijki kodu SQL, a baza danych została wygenerowana.
Spróbujmy teraz dodać nowe pole (street) do klasy reprezentującej naszą osobę:
Code:
Po ponownym uruchomieniu programu otrzymamy następujący wyjątek:
Link podany w treści wyjątku prowadzi do strony gdzie opisano nowość w EF - code migrations.
O tej nowości napiszę w kolejnym poście związanym z EF Code First.
"Jeżeli zobaczymy poniższy wyjątek:
OdpowiedzUsuńOznacza to, iż provider ma problem z odnalezieniem serwera bazy danych."
U mnie wyjątek występuje co jest poprawne. Zastanawiam się jednak nad sytuacją gdy błąd ten nie wystąpi. EF ma jakiś mechanizm domyślnych ustawień connectionstringa?
Maciej Lis
Tak jeżeli jest zainstalowana baza SQL Server w wersji Express. Wtedy instancja bazy zostanie domyślnie utworzona właśnie na tym serwerze.
Usuń