Entity Framework Простой отчет - PullRequest
       4

Entity Framework Простой отчет

2 голосов
/ 25 октября 2010

Как бы я написал запрос, используя структуру сущностей, где мне нужно составить список со столбцом для продукта, категории и родительской категории.Я не понял, как получить родительскую категорию.Любая помощь приветствуется.Пока у меня есть следующее:

from product in Products
select new { Ctg = (from prdCategory in ProductCategories
                    where prdCategory.Products.Contains(product)
                    select prdCategory.CategoryName).FirstOrDefault(),
             Name = product.ProductName
             ParentCtg = ...
    }

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Хорошо, если все ассоциации были правильно настроены из вашей базы данных, то это будет один простой запрос:

var product = from p in context.Products
              select new {
                 Name = product.ProductName,
                 CategoryNames = p.ProductCategories
                         .Select(c => c.CategoryName).ToList(),
                 ParentCategories = p.ProductCategories
                         .Select(c => c.ProductCategory2.CategoryName).ToList()
              };

Когда EF отображает Само-ссылающиеся ассоциации , этосоздает два соответствующих свойства навигации с именами ProductCategory1 и ProductCategory2.Ни одно из этих имен не особенно полезно, одно из этих свойств навигации относится к родительской категории или стороне 0..1 отношения.Другой относится к детям или * стороне отношений.
Чтобы понять, что есть что, щелкните правой кнопкой мыши ProductCategory1 в окне свойств, кратность для ProductCategory1 равна * (много), поэтому ProductCategory1 представляетсвойство навигации для дочерних элементов или подкатегорий (также оно имеет тип EntityCollection<ProductCategory>), а другое - ProductCategory2 - представляет родительскую категорию для этой категории и имеет тип ProductCategory.По вашему запросу мы заинтересованы в этом.
Кроме того, чтобы сделать ваш запрос более читабельным, можно переименовать ProductCategory1 в Подкатегории и ProductCategory2 в ParentCategory .

0 голосов
/ 25 октября 2010

Если я правильно понимаю вашу схему, это должен быть простой случай получения простого списка Продуктов, а в вашем списке отображения должен просто отображаться столбец с именем thisProduct.Category.Name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...