Есть ли причина использовать LINQ to SQL или мне просто перейти к Entities?
Я вряд ли объективен (как упорный пользователь LinqToSql), но это ответит.
Технологии объектно-реляционного сопоставления - это попытки решить или уменьшить несоответствие объектно-реляционного импеданса. Они являются мостами между двумя мирами - миром объектов и миром реляционных данных.
И похоже, что разработчики этих мостов вообще называют ту или иную сторону своим домом.
LinqToSql - это ORM со стороны объекта. Он был разработан командой C # и позволяет использовать объекты для представления данных. В LinqToSql нет строк, непрозрачных для компилятора, все запросы проверяются компилятором на соответствие отображению.
EF - это ORM со стороны данных. Он был разработан командой ADO и позволяет использовать данные, представленные в виде объектов. В EF много непрозрачных строк.
В конечном итоге запросы должны выполняться в базе данных, и компилятор не может подтвердить, что база данных, доступная во время выполнения, соответствует отображению (истинно в любом ORM). Из-за реальности мира данных команда данных не ценит гарантии компилятора так же сильно, как команда C #.
Проработав много лет в бэкэнде TSQL, без защиты компилятора, я очень дорожу любой помощью, которую компилятор может мне оказать. И поэтому я на стороне команды C # в этом вопросе.
Например, загрузка клиента с его заказами.
//linq to sql.
DataLoadOptions load = new DataLoadOptions();
load.LoadWith<Customer>(c => c.Orders); //<-- strong typed
myDataContext.LoadOptions = load;
IQueryable<Customer> query = myDataContext.Customers
.Where(c => c.CustomerId == 1);
//entity framework
IQueryable<Customer> query = myObjectContext.Customers
.Include("Orders") // <-- opaque string
.Where(c => c.Customer.Id == 1);
person
Amy B
schedule
04.06.2010