2010-07-25 14 views
9

Chciałbym poznać zalety i wady stosowania metody EF-Code-First. Czy możemy powielić wszystkie funkcje oferowane przez klasy generowane przez EF4, takie jak Leniwe ładowanie, ładowanie powiązanych obiektów itp.?Entity Framework 4 Code-First za i przeciw

Dzięki

Odpowiedz

7

Plusy

  1. Lekkie ćwiczenia podmiot lub poco oparte.
  2. Więcej kontroli nad klasami encji, ponieważ kodujesz je samemu, a nie w zależności od EF do ich wygenerowania. Oznacza to, że nie musisz definiować klas częściowych, aby tworzyć adnotacje danych.
  3. Opcja polegająca na tym, że nigdy nie trzeba określać mapowania w dowolnym miejscu. Konwencja przejmuje konfigurację.
  4. DbContext podąża za wzorem repozytorium.
  5. Leniwe ładowanie, powiązana jednostka ładuje wszystkie zaopiekowane dla ciebie. Na przykład model Post może zadeklarować model autora w POCO i kod EF najpierw będzie automatycznie odwzorować tę relację. Ponowne użycie konwencji sprawia, że ​​jesteśmy tak wydajni.
  6. Działa doskonale do zastosowań w terenie.
  7. Generowanie widoku ASP.NET MVC działa świetnie.
  8. ModelBinder działa tak samo jak zwykle.

Wady

  1. Brak wsparcia API do dostosowywania konwencję odwzorowania w bazie jak w Fluent NHibernate.
  2. Trudne do odwzorowania do istniejących baz danych. (Może się to zmienić w wersji Release).

Przykładowy kod i mapowanie do istniejących baz danych przy użyciu kodu EF 4.0 Pierwszy zobacz ten wpis na blogu. http://theminimalistdeveloper.com/2010/07/28/how-to-map-pocos-to-existing-databases-in-entity-framework-4-0-code-first-and-asp-net-mvc-2/

+0

Wady. nie są prawdziwe! ze względu na szablon T4 jest dostępny do wykorzystania projektanta EF do obsługi kodu EF Najpierw po prostu! –

1

Wady:

  • Skoro nie masz EDMX, nie można pregenerate widoki
  • Jeszcze nie dopuszczony do ruchu-Live. Mam nadzieję, że wkrótce to się zmieni.

Plusy

  • Ponieważ nie ma ustalonego schematu, można zbudować jeden dynamicznie w czasie wykonywania.

Większość innych rzeczy jest dokładnie takich samych (leniwy ładowanie, jawne ładowanie itp.). Kilka innych to sprawy osobiste (API).

+0

Co z takimi funkcjami, jak leniwy ładunek, klucze do foregin, procedury przechowywane itp.? –

+0

@Craig "Ponieważ nie masz EDMX, nie możesz generować widoków" Obawiam się, że to nieprawda. Możesz generować widoki na podstawie klas modeli - bez względu na to, czy masz pliki edmx. –

+0

@Bikal: Jaka jest składnia EdmGen dla tego? Premier EF powiedział mi, że nie da się tego zrobić rok temu. ... lub czy mylisz widoki MVC z widokami EF? –

0

Ponieważ pytałeś konkretnie o Lazy Loading, oto zapis o wyświetleniu Working with Lazy Loading with Entity Framework Code First, w którym jest on domyślnie włączony. Aby w konkretny sposób odpowiedzieć na tę część pytania, tak z Code First nadal czerpiesz korzyści z Lazy Loading, a tak naprawdę, jak pokazuje post, masz bardzo drobną kontrolę nad tą funkcją.

Powiązane problemy