LINQ to Entities
Следащият голям клон в LINQ е LINQ to Entities (или още познат като ADO.NET
vNext или ADO.NET Entity Framework).
Неговата имплементация изисква много повече ресурси от тази на LINQ to
SQL, което в комбинация с недостатъчното време до официалното
пускане на пазара на VS 2008 принуди екипа да извади LINQ
to Entities от пакета възможности на VS 2008.
Това не означава, че ще трябва да чакаме до следващата версия на Visual
Studio, за да го използваме – след като бъде завършено LINQ
to Entities ще бъде пуснато като допълнение към Visual
Studio.
Ако обърнахте внимание при работа с LINQ
to SQL всеки клас от C# е директно свързан
към една таблица/изглед от MS SQL Server – или имаме директно
свързване (mapping) на бизнес обекта със механизма за
съхранение. Някои проекти с по-сложна схема на базата данни изискват съхранение
на един обект в няколко таблици, което изисква по-сложно свързване (mapping). По този начин логическата схема на бизнес обектите може да се
различава значително от схемата на базата данни. Това прави LINQ to
Entities много по-завършен ORM инструмент от
LINQ to SQL.
За да сравним по-добре LINQ to Entities с LINQ to SQL нека да разгледаме следната таблица
с основни възможности[6]:
Feature
|
LINQ to SQL
|
LINQ to Entities
|
Language Extensions Support
|
Y
|
Y
|
Language Integrated Database
Queries
|
Y
|
Y
|
Many-to-Many (3way Join/Payload
relationship)
|
N
|
N
|
Many-to-Many (No payload)
|
N
|
Y
|
Stored Procedures
|
Y
|
N (to be added)
|
Entity Inheritance
|
N
|
Y
|
Single Entity From Multiple Tables
|
N
|
Y
|
Identity Management / CRUD
features
|
Y
|
Y
|
Самата архитектура на LINQ to Entity добавя допълнителен слой между езиковата конструкция, определяща
заявката (код на C#) и заявката към слоя за съхранение на
данните (MS SQL Server, Oracle и др.). В този слой
EntityProvider изплозвайки дефинирата схема за свързване (mapping) преобразува заявката в подходяща за схемата и езика на слоя за
съхранение на данните.
За да работим с LINQ to Entity трябва да създадем Entity Data Model (EDM),
подобно на Създаване на
модела на базата в LINQ to SQL с
тази разлика, че освен генерирани класове трябва да се направи файл, който да
указва свързването. Този файл е в XML формат. След това
може да работим с данните по същият начин, по който работихме и в LINQ
to SQL, защото вътрешните детайли остават скрити за нас.
LINQ to Entity (Entity Framework), както показва и името, е цяла нова система за работа с данни – нов framework
и цялостното му обхващане може да се събере в отделна книга.
Затова ще спрем до тук с описанието и ще изчакаме следващите етапи в развитието
му.
Следваща част: LINQ to DataSet