Родительские / дочерние таблицы не ссылаются в LINQ или я просто не прав? - PullRequest
0 голосов
/ 29 июня 2010

У меня есть таблица категорий «Категория» [ID, заголовок] и таблица «Родитель / ребенок» «CategoryParent» [ID, CategoryID, ParentCategoryID], где дерево «многие ко многим» представлено родителем указанной категориииспользуя поле ParentCategoryID в таблице соединений.

Я подумал, что это будет простая структура, используемая для извлечения корневых категорий (записей категорий, которые имеют NULL в качестве значения ParentCategoryID в таблице соединений) и дочерних категорий (по родителямid.)

Однако ни одна из моих попыток написать оператор LINQ2SQL для получения списка объектов Category по их родительскому идентификатору в таблице соединения не привела к созданию чего-либо скомпилированного.

Я бы опубликовал несколькокод, но ни один из них не является (а) полным или (б) осмысленным - в любых терминах вообще.

Как это можно сделать?

Моя таблица соединений выглядит следующим образом:

CategoryParent
---
ParentCategoryID [int] (PK)
CategoryID [int] FK
CategoryParentID [int] FK

Моя таблица данных (категорий) выглядит следующим образом:

Category
---
CategoryID [int] PK
Title [nvarchar]

Существует две взаимосвязи:

Category.CategoryID 1->* CategoryParent.CategoryID
Category.CategoryID 1->* CategoryParent.ParentCategoryID

Я хотел бы предоставитьлибо NULL, либо CategoryID и получить обратно все строки таблицы Category, для которых он является родительским.

1 Ответ

0 голосов
/ 01 июля 2010

Хорошо, похоже, что я должен был сделать довольно простое соединение с использованием LINQ, а не полагаться на объекты соединения в классе контекста.Что-то вроде:

var props = from i in context.Prices
    join e in context.PricingEntities on i.EntityID equals e.EntityID
    join l in context.PricingEntityProperties on e.EntityID equals l.EntityID
    join p in context.PricingProperties on l.PropertyID equals p.PropertyID
    where i.InstanceID == instanceId
    select p;
...