LINQ для SQL
Работа с LINQ для SQL на платформе .NET Framework осуществляется с помощью классов пространства имен System.Linq и System.Data.Linq.
Перечислим основные классы этих пространств имен.
□ System.Linq:
• Enumerable — предоставляет набор статичных методов для работы с объектами, реализующими интерфейс IEnumerable<T>.
• Queryable — предоставляет набор статичных методов для работы с объектами, реализующими интерфейс IQueryable<T>.
Методы этих классов, вроде Where, Select, Sum и др., используются в любом LINQ-выражении для построения запросов, обработки и фильтрации данных.
□ System.Data.Linq:
• DataContext — основной объект для работы с LINQ для SQL, предоставляет контекст базы данных, через который осуществляется доступ ко всем сущностям базы данных;
• EntitySet<TEntity>, EntityRef<TEntity> (структура) — обеспечивают связь между сущностями в LINQ для SQL;
• Table<TEntity> — представляет таблицу с возможностью изменения объектов;
• CompiledQuery — предоставляет возможность компилировать и повторно использовать запросы.
Контекст базы данных, наследующий от класса DataContext, в LINQ для SQL принято создавать с помощью мастера, который автоматически сгенерирует LINQ для SQL-классов. После такой генерации работа с объектной моделью становится очень простой, например, приведенный в разделе ADO.NET пример в исполнении LINQ для SQL будет выглядеть так:
using (MyDatabaseDataContext dataContext = new MyDatabaseDataContext())
{
string phone = dataContext.Customers
.Where(x => x.name == "Сергей Петров")
.FirstOrDefault().phone;
}
Согласитесь, это заметно более простое решение по сравнению с вариантом, написанным с использованием ADO.NET Dataset.