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.
Марк