ASP.NET MVC + LINQ to SQL или сущности? - PullRequest
8 голосов
/ 10 июня 2009

Когда был выпущен linq to entity, все говорят, что linq to sql мертв.

Но большинство книг и примеров проектов от сотрудников Microsoft используют mvc + linq для sql.

Есть какая-то причина для этого? LINQ to sql кажется лучше для POCO, не так ли?

Ответы [ 6 ]

9 голосов
/ 10 июня 2009

В основе Linq to SQL лежит мысленный эксперимент . Linq требовалось подтверждение концепции, и Linq to SQL предоставил это.

С тех пор многие в пользовательском сообществе (включая несколько выдающихся сотрудников Microsoft ) приняли Linq to SQL в качестве облегченного ORM для SQL Server, особенно для небольших проектов, таких как NerdDinner .

Фурор начался с этого поста командой ADO.NET. В нем говорится, что Linq to SQL будет поддерживаться, а функции будут добавляться на основе отзывов сообщества пользователей, но что Entity Framework будет в центре внимания будущих усилий по доступу к данным.

Многие в сообществе пользователей интерпретировали этот шаг как « Microsoft убивает Linq для SQL ».

Microsoft не помогла решить проблему, когда она отключила модель провайдера для Linq to SQL, закрыв некоторые критические классы , фактически сделав Linq to SQL пригодным для использования только с SQL Server. Entity Framework будет ORM для нескольких поставщиков данных .

К сожалению, Entity Framework, похоже, не совсем готов к прайм-тайм .

Так что это зависит от того, кому вы верите. Верите ли вы в спекуляции (и это всего лишь спекуляции) многих блогеров, которые говорят, что Linq to SQL действительно мертв и похоронен, или вы верите людям вроде Damien Guard из Microsoft, которые говорят, что Linq to SQL давно жизнь впереди ?

3 голосов
/ 10 июня 2009

Linq-to-SQL - это отличная технология, которая очень проста в использовании, поэтому она очень хорошо ориентирована на демонстрации и является идеальным выбором и для небольших, более простых проектов, где у вас более или менее прямой 1: 1 отображение ваших таблиц в SQL Server на ваши объекты в памяти.

И это самые строгие ограничения Linq-to-SQL:

  • Только для SQL Server
  • прямое отображение 1: 1 из таблиц в объекты в памяти

Если это нормально, продолжайте и используйте Linq-to-SQL! Во что бы то ни стало - MS все еще добавляет функции и исправляет их для .NET 4.0 - он не умер в долгосрочной перспективе.

Entity Framework в своей версии v1, доступной прямо сейчас, имеет некоторые недостатки, как справедливо упоминали другие авторы (без поддержки POCO, без подхода «сначала проектирование домена» и многие другие). Но набор функций EF v4 выглядит очень убедительно и обеспечит запуск Linq-to-SQL за свои деньги!

Основными преимуществами EF по сравнению с Linq-to-SQL в корпоративной среде являются независимость от базы данных (вы можете подключить ее к Oracle, Firebird, DB2 и многим другим), что может иметь решающее значение, а также возможность представить вам с объектной моделью, которая выглядит совершенно иначе, чем физическая модель хранения в базе данных (благодаря сопоставлению между концептуальным уровнем и физическим уровнем хранения).

Так что на самом деле все зависит от того, что вам нужно: нужен ли вам быстрый способ для начала работы (демонстрации, более простые приложения) - тогда вы, безусловно, выберете Linq-to-SQL (по крайней мере, на данный момент), или выполните вам нужен гибкий подход к сопоставлению с бэкэндом, отличным от SQL Server, - тогда ваш выбор будет Entity Framework.

Марк

1 голос
/ 10 июня 2009

Лично я бы начал привыкать к Entity Framework сейчас. Поскольку он имеет больше функций, не зависит от провайдера и разрабатывается (возможно) более агрессивно. Две самые распространенные жалобы, которые я слышу, это отсутствие POCO и отсутствие отложенной загрузки. Похоже, что оба они рассматриваются в .NET 4.0 http://blogs.msdn.com/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading.aspx

Помимо того, что я потенциально быстрее (с чего начать) или проще, я не уверен ни в каком конкретном преимуществе в использовании LINQ to SQL в долгосрочной перспективе. Кто-нибудь знает что-нибудь?

1 голос
/ 10 июня 2009

Единственная причина, по которой образцы были написаны с использованием LINQ-to-SQL, заключается в том, что их установка быстрая и простая.

В противном случае вы можете использовать любую ORM для вас, будь то EF или NHibernate или что-то еще.

0 голосов
/ 10 июня 2009

По моему мнению, Linq to Entity не является хорошим кандидатом на данный момент . Одна из вещей, которые мне не понравились в Linq To Entity, - это отсутствие ленивой загрузки, которая вела меня вверх по стене каждый раз, когда я писал свои репозитории. Я думаю, это то, что убило это для меня. Другое дело - проблема присоединения и отсоединения сущностей, которые используются несколькими экземплярами контекста объекта. Для меня это стало еще одним убийцей, который привел к множеству хакерских попыток воссоздать отношения сущностей и т. Д. Честно говоря, я думаю, что лучше было бы дождаться следующего выпуска этой платформы. Я думаю, что хорошие вещи идут за это:)

0 голосов
/ 10 июня 2009

В примере главы nerddinner, написанной ScottGu, используется Linq-To-SQL, он не поддерживает LINQ-to-SQL, но и не продвигает LINQ-To-Entities. Благодаря ViewModel (у Стивена Уолтера хорошая статья об этом) и шаблону хранилища LINQ-To-SQL идеально подходит для разработки приложений ASP.NET MVC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...