User Tools

Site Tools


developer:linq:m2m

Использование M2M-полей в LINQ-to-SQL классах

В LINQ-to-SQL классах, генерируемых QP7.Framework в отличие от стандартных LINQ-to-SQL классов, существует поддержка M2M-полей.

Они доступны в двух интерфейсах:

  1. Поле-коллекция в cущностном классе, которая состоит из экземпляров связанного сущностного класса
  2. Класс, представляющий узловую таблицу

Первый интерфейс обычно используется для простых выборок, добавления, удаления связанных статей. Второй интерфейс – для сложных выборок – а именно для фильтрации по M2M-полю на уровне SQL.

При написании LINQ-запроса с фильтрацией по M2M-полю на уровне SQL алгоритм следующий:

  • начинаем с узловой сущности
  • фильтруем по одной связанной сущности
  • делаем проекцию по второй связанной сущности
IQueryable<Article> art = ctx.ArticlesCategories.Where(n => n.Category.Title == "main").Select(m => m.Article);

Особенности использования M2M-полей при явном инстанцировании контекстного класса описаны здесь.

Discussion

Enter your comment
 
developer/linq/m2m.txt · Last modified: 2011/05/06 09:55 by celutp