Теперь, когда был выпущен .NET v3.5 SP1 (вместе с VS2008 SP1), у нас теперь есть доступ к инфраструктуре сущностей .NET.
У меня вопрос такой. При попытке выбора между использованием Entity Framework и LINQ to SQL в качестве ORM, в чем разница?
Как я понимаю, Entity Framework (при использовании с LINQ to Entities) является «старшим братом». LINQ to SQL? Если это так, то какие преимущества он имеет? Что он может сделать, что LINQ to SQL не может сделать самостоятельно?
LINQ к SQL только поддерживает от 1 до 1 отображения таблиц базы данных, представлений, sprocs и функций, доступных в Microsoft SQL Server. Это - большой API для использования для быстрой конструкции доступа к данным для относительно хорошо разработанных баз данных SQL Server. LINQ2SQL был сначала выпущен с C# 3.0 и.Net Платформой 3.5.
LINQ к Объектам (Платформа Объекта ADO.NET) является ORM (Объектный Реляционный Картопостроитель) API, который допускает широкое определение объектных моделей предметной области и их отношений ко многим различным поставщикам данных ADO.NET. По сути, Вы можете смешивание и подгонка много различных поставщиков базы данных, серверов приложений или протоколов для разработки агрегированного мэшапа объектов, которые создаются из множества таблиц, источников, сервисов, и т.д. Платформа ADO.NET была выпущена с.Net Платформой 3,5 SP1.
Это - хорошая вводная статья о MSDN: Представление LINQ к Реляционным Данным
Мой опыт с Платформой Объекта был менее, чем звездным. Во-первых, необходимо наследоваться базовым классам EF, поэтому сказать до свидания POCOs. Ваш дизайн должен будет быть вокруг EF. С LinqtoSQL я мог использовать свои существующие бизнес-объекты. Кроме того, нет никакой ленивой загрузки, необходимо реализовать это сами. Существует некоторая работа arounds там для использования POCOs и ленивой загрузки, но они существуют, по моему скромному мнению, потому что EF еще не готов. Я планирую возвратиться к нему после 4.0
Существует много очевидных различий, обрисованных в общих чертах в той статье @lars, отправленный, но короткий ответ:
, исходная предпосылка была L2S, для Быстрой разработки и EF для большего количества "enterprisey" n-tier приложения, но это продает L2S, немного короткий.
Если Ваша база данных будет проста и проста, LINQ к SQL сделает. При необходимости в логических/абстрактных объектах сверху таблиц то пойдите для Платформы Объекта.
isAssignableFrom
посещает Урок в качестве параметра, и по существу делает то же самое, как isInstance
делает на объекте. isInstance
возвращает true, если аргумент совместим с присвоением с классом, таким образом, это работает над подклассами одинаково хорошо.
– Mark Peters
12.10.2019, 05:58
Я думаю, что быстрый и грязный ответ - то, что
Я думаю, необходимо ли разработать что-то быстрое без Странных вещей в середине, и Вам нужно средство, чтобы иметь объекты, представляющие Ваши таблицы:
Linq2Sql может быть объединенной пользой, использование его с LinQ развязывает большую синхронизацию разработки.
Мое впечатление - то, что Ваша база данных довольно огромна или очень плохо разработанная, если Linq2Sql не соответствует Вашим потребностям. У меня есть приблизительно 10 веб-сайтов, и больше и меньших все использование Linq2Sql. Я смотрел и платформа Объекта много раз, но я не могу найти серьезное основание для использования ее по Linq2Sql. Это сказало, что я пытаюсь использовать свои базы данных в качестве модели, таким образом, у меня уже есть от 1 до 1 отображения между моделью и базой данных.
В моем текущем задании у нас есть база данных с 200 + таблицы. Старая база данных с большим количеством плохих решений, таким образом, там я видел преимущество Платформы Объекта по Linq2Sql, но тем не менее я предпочту перепроектировать базу данных начиная с базы данных, является механизмом приложения и если база данных будет плохо разработана и медленная тогда, то мое приложение также будет медленным. Используя платформу Объекта на такой базе данных походит на quickfix для маскировки плохой модели, но это никогда не могло маскировать плохую производительность, которую Вы получаете от такой базы данных.
LINQ к Действительно Мертвому SQL? Jonathan Allen для InfoQ.com
Matt Warren описывает [LINQ к SQL] как что-то, что ", как даже не предполагалось, существовало". По существу это, как просто предполагалось, было заместителем, чтобы помочь им разработать LINQ, пока реальный ORM не был готов.
...
масштаб Платформы Объекта заставил его пропускать.NET 3.5/Visual Studio крайних срока 2008 года. Это было завершено как раз к, к сожалению, именованной ".NET 3.5 Пакета обновления 1", который больше был похож на главную версию, чем пакет обновления.
...
Разработчикам не нравится [Платформа Объекта ADO.NET] из-за сложности.
...
с.NET 4.0, LINQ к Объектам будет рекомендуемым решением для доступа к данным для LINQ к реляционным сценариям.