====== Использование M2M-полей в LINQ-to-SQL классах ====== В LINQ-to-SQL классах, генерируемых //QP7.Framework// в отличие от стандартных LINQ-to-SQL классов, существует поддержка M2M-полей. Они доступны в двух интерфейсах: - Поле-коллекция в cущностном классе, которая состоит из экземпляров связанного сущностного класса - Класс, представляющий узловую таблицу Первый интерфейс обычно используется для простых выборок, добавления, удаления связанных статей. Второй интерфейс -- для сложных выборок -- а именно для фильтрации по M2M-полю на уровне SQL. При написании LINQ-запроса с фильтрацией по M2M-полю на уровне SQL алгоритм следующий: * начинаем с узловой сущности * фильтруем по одной связанной сущности * делаем проекцию по второй связанной сущности IQueryable
art = ctx.ArticlesCategories.Where(n => n.Category.Title == "main").Select(m => m.Article); Особенности использования M2M-полей при явном инстанцировании контекстного класса описаны [[developer:linq:context#Особенности_использования|здесь]].