Czy to jest lepsze? Słyszałem rozszerzenie CodeFirst, ale czy jest gotowe na pierwszy dzień. Podziel się swoimi doświadczeniami z rozwojem, wszelkimi kosztami związanymi z wydajnością, itp.W jaki sposób EF4 porównuje się z NHibernate?
Odpowiedz
Myślę, że jest to aktualne pytanie, ponieważ zastanawiałem się dokładnie nad tym samym. Próbuję stworzyć poważny model handlu elektronicznego i staram się zachować moje POCO wolne od obaw o wytrwałość, a także staram się pozostać wiernym Domain Driven Design. Do tej pory jestem bardzo ostrożny i jestem na granicy, czy powinienem przeskoczyć statek do NHibernate. Jedyną rzeczą, która powstrzymuje mnie od tego, jest to, że zakładam, że Microsoft poprawi (i szybko).
Niektóre z największych problemów do tej pory:
- Niezdolność do drobno obiektu kontrola materializacji. EF wywołuje konstruktor zerowego arg na twoim POCO, a to jest zachowanie, którego nie możesz zmienić.
- Brak wsparcia enum. Społeczność krzyczy - krzyczy! - za to i tak się nie stało. Obejścia są straszne i zanieczyszczają twój model domeny.
- Dziwne błędy mapowania podczas próby kontrolowania nazw kolumn i relacji w bazie danych. Głównymi, o których mogę pomyśleć, są klucze złożone i relacje wiele do wielu. Można je obejść i zakładam, że zostaną one naprawione przez czas wydania, ale mimo to są frustrujące.
- Zły SQL. Wykonuję również pracę DBA, a SQL, który EF generuje (z lub bez Code-First) jest okropny.
A to tylko wierzchołek góry lodowej: dopiero zaczynam uczyć się EF4 i wpadam w okropne blokady dróg. Ponieważ myślę o więcej powodów, dodam je tutaj. Nadal się przez to zmagam.
(zastanawiam się, czy społeczność nada mu inny głos z „wotum nieufności”.)
Więcej:
- Aby dodać do problemu „Weird błędy mapowania”: Nie możesz kontrolować nazwę kolumny, jeśli uczestniczy w relacjach samoreferencyjnych (na przykład, jeśli posiadasz hierarchię). Zakładam, że zostanie to naprawione w ostatecznej wersji.
- Brak grupowania, co powoduje wielokrotne odwiedziny do bazy danych. Na przykład, jak usunąć grupę przedmiotów z kolekcji? Załaduj wszystkie elementy do pamięci i usuwaj je pojedynczo. Mniejszy wskaźnik to liczba trafień DB podczas wstawiania do tabel, które uczestniczą w relacji dziedziczenia.
- Brak inteligentnego sposobu radzenia sobie ze zmianami modelu. Kod EF - Najpierw uwielbia całkowicie upuszczać całą bazę danych, jeśli trzeba zmienić schemat.
- Kilka punktów rozszerzalności. Możesz dosłownie liczyć na jedną rękę liczbę zdarzeń, które EF4 pozwala ci zapisać (a Code-First nie zapewnia znacznie więcej).
Jak dla mnie - ja wolę EF ale z pewnymi ulepszeniami.Zasadniczo EF oferuje Państwu następujące korzyści:
- modelu wizualne Editor
- Database/model kreatora Update (zamiast ręcznych zmian XML - co jest straszne dla mnie)
Również jestem stosując 3-rD firm komercyjnych narzędzi opartych na EF i L2S (LinqConnect), które stanowią dla mnie następujące funkcje:
- Geography support
- Optimized SQL generation
- Produkt całkowicie zintegrowane z Visual Studio
- Inteligentny kreator aktualizacji bazy danych (tryb synchronizacji)
- 1. W jaki sposób Elm porównuje się do ClojureScript?
- 2. W jaki sposób jboss kuge porównuje się do roo wiosny?
- 3. W jaki sposób yum porównuje wersje?
- 4. W jaki sposób wyrażenie warunkowe porównuje łańcuchy?
- 5. W jaki sposób SQL Server porównuje datę z literałem łańcuchowym?
- 6. W jaki sposób program gtest porównuje wartości w dwóch tablicach?
- 7. W jaki sposób Google App Engine porównuje się z planami hostingowymi?
- 8. W jaki sposób Perl porównuje ciągi pod maską?
- 9. W jaki sposób Asp.Net MVC porównuje się do frameworków Java MVC?
- 10. W jaki sposób logowanie przez Google+ porównuje się do logowania googleappengine.api.user?
- 11. W jaki sposób projekt .NET 4.0 według umowy porównuje się do wersji Eiffel?
- 12. W jaki sposób javafx porównuje się do huśtawki pod względem cech gry griffon 1.2?
- 13. W jaki sposób Xamarin na Androida (Mono na Androida) porównuje się do rodzimego programowania Androida?
- 14. Jaki jest najlepszy sposób na rozpoczęcie korzystania z NHibernate?
- 15. Z scons, w jaki sposób łączysz się z gotowymi bibliotekami?
- 16. W jaki sposób tablica # - (operator odejmowania) porównuje elementy pod kątem równości?
- 17. Jaki jest cel OnModelCreating w EF4 Code-First?
- 18. W jaki sposób implementuje się Wami Recorder?
- 19. W jaki sposób oblicza się em?
- 20. W jaki sposób implementuje się fractions.limit_denominator python?
- 21. W jaki sposób metody rozszerzeń łączą się
- 22. W jaki sposób używa się layoutIfNeeded?
- 23. W jaki sposób wdraża się std :: tuple?
- 24. W jaki sposób selektory JMS skalują się z głębokością kolejki?
- 25. W jaki sposób C++ std :: mutex łączy się z zasobem?
- 26. W jaki sposób biblioteki statyczne łączą się z zależnościami?
- 27. W jaki sposób dostosowuje się stronę sklepu z aplikacjami Mac?
- 28. W jaki sposób cpu komunikuje się z urządzeniami peryferyjnymi?
- 29. W jaki sposób strace łączy się z działającym już procesem?
- 30. W jaki sposób logujesz się do Firebug z rozszerzenia?
Jest to bardzo ciekawe i użyteczne. Mam nadzieję, że więcej osób z SO opowie, zanim trolle zamkną ten wątek. –
Chciałbym także usłyszeć więcej, ponieważ jestem/bardzo/w konflikcie o popełnieniu kodu EF4. – anon
To jest bardzo dobra lista. Wszystkie ważne punkty, których doświadczyłem w ciągu ostatnich kilku miesięcy. Dodałbym również brak EF4 typu "GEOGRAPHY" wsparcie typu danych (SQL Server) i niezdolność do przekazywania typów tabel zdefiniowanych przez użytkownika (również SQL Server) do przechowywanych proc. Aby walczyć z tym pierwszym, musiałem użyć wyzwalaczy, aby zwalczyć to drugie, zdegradowałem się do klasycznego ADO.NET. – RPM1984