2009-05-21 10 views
20

Mam projekt, który zaimplementował Linq To SQL i byłem z tego całkiem zadowolony. Przez jakiś czas największym problemem było to, że projektant był zaniepokojony.Ktoś inny żałuje używając Entity Framework?

Niestety, mój projekt wymaga teraz wielokrotnego dziedziczenia tabel, a Linq do SQL go nie obsługuje. Zdecydowałem się przejść na Entity Framework, gdy dowiedziałem się, że obsługuje on wiele dziedziczenia i wydaje się, że to kierunek, w którym zmierza Microsoft. Ale teraz zaczynam żałować tej decyzji.

Na przykład wywołanie funkcji Load()? WTF? Gdybym nie chciał tych danych, nie prosiłbym o to! Poznanie wszystkich dziwactw analnych Entity Framework staje się ogromnym cierniem w mojej stronie.

W każdym razie ... czy jest światło na końcu tunelu? Kiedy skończę, czy EF będzie opłacalny, czy też podjąłem straszną decyzję?

Na koniec chciałbym zapytać: skąd firma Microsoft współpracowała z całym rozwiązaniem ORM? ActiveRecord Rails działa pięknie i prosto od lat.

+1

Brak odpowiedzi jako takiej, ale prawdopodobnie rozwiązanie; ActiveRecord ... –

Odpowiedz

11

Nie jesteś sam w swoim bólu. Omówiono ulepszenia, które są wprowadzane do Entity Framework w .NET 4.0. Wydają się być dość znaczące, ale niezależnie od tego, czy są wystarczające dla twoich potrzeb, tylko Ty możesz to ocenić.

+0

Dzięki za link. Wygląda na to, że zmieniają swoje cele w pozytywnym kierunku. Wygląda na to, że zamierzają w łatwy sposób korzystać z leniwego ładowania. – grimus

7

Cóż, VS2010 beta is available; możesz uruchomić maszynę wirtualną i sprawdzić, czy EF w wersji 4.0 bardziej Ci odpowiada?

Osobiście utknąłem z LINQ-SQL na razie, ale prawdopodobnie dlatego, że nie potrzebowałem jeszcze żadnej z innych funkcji.

+0

+1 za radę L2S - Jestem z Tobą w 100% na tym. Jeśli chodzi o EFv4 - pod względem funkcji robią postępy z EF (chociaż zajęło mi dokładnie 20 sekund, aby uczynić model EF bezużytecznym za pomocą kreatora "model aktualizacji z bazy danych" VS2010 beta). Jednak bardziej niepokoi mnie SQL generowany przez EFv4 - w pierwszej rundzie testów, które zrobiłem, nie (jeszcze) naprawili błędów generatora SQL, które generują zapytania potworów z dużą ilością zbędnych sprzężeń itd ... ... no cóż, wciąż jest beta, więc może EFV4 RTM będzie lepsze ... – KristoferA

3

Właściwie nie mogę się już doczekać, aby użyć Entity Framework w wersji v4 z nadzieją na Real Soon Now. To prawda, że ​​w naszym przypadku towarzyszy temu pozbywanie się brzydkiej ORM, która nie jest już obsługiwana, co jest gorsze od plagi - więc EF v4 wygląda jak wysłany przez Boga! :-)

Marc

3

I dla jednego zostały kwaśno rozczarowany EF v1.0. Obiecał wiele, ale w rzeczywistości był wyjątkowo restrykcyjny, wykonywany w okropny sposób i nie wspierał istniejących aplikacji i infrastruktur.

To powiedziawszy, EF v2.0 wygląda bardzo obiecująco. Firma Microsoft otworzyła proces projektowania dla mas, pozwalając tym z nas, którzy chcą zobaczyć EF, aby odnieśli sukces i sprawdzili, czy pasuje do wielu różnych scenariuszy użycia, że ​​naprawdę powinien oferować nasze sugestie, porady i opinie.

Jeśli jesteś ciekaw wyników tego wysiłku, lub chcą podać swoje własne wejście, należy sprawdzić bloga EF projekt, tu: http://blogs.msdn.com/efdesign/

W końcu, jeśli Microsoft nadal nie jest w stanie produkcji elastycznego ORM, który pasuje do wielu różnych scenariuszy, zawsze jest NHibernate. Używam LINQ do SQL, Entity Framework i NHibernate przez jakiś czas, a spośród trzech, NHibernate jest najbardziej przyjaznym, elastycznym i dojrzałym środowiskiem. Nie ma zbyt wiele w projektowaniu wizualnym, ale jeśli jesteś sfrustrowany ograniczeniami, dziwactwami, dziwnymi zachowaniami i złym działaniem EF, NHibernate jest świetną alternatywą.

+1

Dzięki za radę. Myślę, że gdybym miał rozpocząć projekt od nowa, poszedłbym do NHibernate od samego początku. – grimus

2

Dla obserwacji:

Dałem się na razie na Entity Framework. Przepisywanie kodu zostało tramatizing i nie jestem wcale zadowolony z wyniku ... w dużej mierze ze względu na brak leniwego wsparcia ładowania.

Postanowiłem wrócić do Linq do SQL i wypróbować dziedziczenie pojedynczej tabeli na teraz. Nie mamy zbyt wielu typów dzieci, więc na razie powinno to być brzydkie, ale akceptowalne rozwiązanie. Po wydaniu nowej wersji VS i Entity Framework rozważę zmianę w tym momencie, ponieważ zmiany w nowej wersji wyglądają obiecująco.

+0

Zacząłem także od EF i zdecydowałem się powrócić do starego dobrego Linq2Sql. Nie tylko są dziwactwa, Linq2Sql również w niektórych przypadkach buduje lepszy/szybszy SQL (EF nie używa na przykład instrukcji LIKE). – Gidon

3

Całkowicie się zgadzam. Leniwe ładowanie jest tym, co zabiło dla mnie strukturę istoty. Po prostu otwiera puszkę z robakami, dołączając i odłączając jednostki do instancji kontekstu. Naprawdę nie chcę się martwić o te rzeczy. Ale kto wcześniej nie pracował z półzmierzonym produktem Microsoftu :) Cieszę się, że poprawią to w nowej wersji. Do tego czasu L2S wydaje się być twoim najlepszym wyborem.