[.net] Считаете ли вы целесообразным перейти на Entity Framework?



Answers

Я выполнил несколько проектов MVC, которые сейчас производятся с L2SQL под капотом, и нашел для него довольно радость. Сейчас я приступаю к новому проекту и решил написать его с использованием EF и L2EF с учетом ранее цитированных статей, в которых провозглашается смерть L2SQL. Спустя всего пару дней я решил вернуться к L2SQL. Простые вещи, такие как необходимость устанавливать внешние ключи для вставок, используя либо ужасный синтаксис, показанный ниже, либо необработанные запросы, потрясли меня.

foo.Foreign_TypeReference.EntityKey = 
     new EntityKey("DataContextName.Foreign_Type", "Foreign_Type_Id", ForeignTypeId);

Скорее, чем:

foo.Foreign_Type_Id = ForeignTypeId;

Я не думаю, что будет трудно переносить L2SQL в будущую версию EF, поскольку у L2SQL есть подмножество функциональности (хотя лучше реализовано). Несколько вещей, которые L2SQL имеет, что L2EF не делает, например Single () и SingleOrDefault (), могут быть перенесены в EF, создав несколько методов расширения. Я думаю, что для запуска системы с использованием L2SQL потребуется гораздо меньше времени, а затем портировать ее позже, когда EF не так вонючий.

Question

С LINQ to SQL, скорее всего, не будет так активно развиваться, как Entity Framework, как вы думаете, лучше переключиться на Entity Framework?

Я лично нашел EF очень неуклюжим и сложным в использовании по сравнению с LINQ to SQL, который кажется очень естественным.

EDIT: Недавно я опубликовал статью в своем блоге о своих чувствах к этому потенциальному решению ...

ADO.NET v LINQ to SQL




LINQ to SQL, похоже, не является вариантом, если вы не используете SQL Server (или SQL Server compact), поэтому мне достаточно было избежать этого и использовать EF (я хотел использовать PostgreSQL).

В v1 EF явно отсутствуют вещи, которые заставили бы меня порекомендовать его. Это похоже на версию 2 EF (когда она была выпущена) будет первой версией, которую можно серьезно порекомендовать для переключения на.




Недавно мне пришлось исследовать, какой проект ORM должен использовать. Сначала - попробовал L2S. Это было неплохо, но это уже устарело (MS больше не поддержит его), поэтому я начал проверять L2E. Я в порядке с сгенерированным кодом, но создание поддельных представлений, сущностей и сопоставлений между ними просто для того, чтобы сделать хранимую процедуру доступной, чтобы не заполнять все поля сущности, было для меня излишним. И я хотел отделить свой уровень данных, так что - мне пришлось сопоставлять данные из сгенерированных объектов с теми, что я сделал.

Мне потребовалось несколько часов экспериментов с NHibernate + Fluent NHibernate + LINQ to NHibernate
придерживаться этой комбинации.




Я должен согласиться с Марком Гравелем. Возможно, когда выпущена следующая версия Entity Framework (.net 4.0 / VS2010), будет преимущество в использовании EF, и к тому времени она, вероятно, будет сильно отличаться от текущей версии EF.

До тех пор, по крайней мере, я избегу EF, как чума для чего-либо, кроме тестов / экспериментального кода, которые никогда не ударят по продукту.

В форуме EF msdn полно примеров того, почему EF не готов к прайм-тайм, но я вижу один конкретный пример, который является явным победителем - как правило, это простой запрос на пять таблиц (10-15 строк SQL) становится > 1500 строк SQL при использовании EF и элемента управления EntityDataSource:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3874607&SiteID=1

http://paste-it.net/public/q6ed5c2/

А что касается будущего EF - с историей Microsoft, которая меняет направление на крупные стратегические вещи в одночасье, кто знает, сработает ли их нынешняя «стратегическая цель» с EF через пару лет ...? Я точно не стал бы на него нападать. Видеть:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4100399&SiteID=1#4107623




Links