Выбор связанных объектов, когда не существует никакой ассоциации - PullRequest
1 голос
/ 12 апреля 2011

EF4 отлично подходит для извлечения связанных данных, но что вы делаете, когда связь не является явной? Пример иллюстрирует мою ситуацию:

MasterTable содержит столбцы child1Id и child2Id.

Существует две таблицы Child1 и Child2 с соответствующими первичными ключами child1Id и child2Id. Существуют сущности Master, Child1 и Child2.

Между таблицами или сущностями Master и Child1 / Child2 нет связи между внешним ключом или структурой сущностей.

Как я могу выбрать основные записи и соответствующие дочерние записи из двух дочерних таблиц, если все, что у меня есть, это совпадающие дочерние идентификаторы в мастер-файле?

Я не могу наладить отношения или ассоциацию.

Richard

1 Ответ

0 голосов
/ 12 апреля 2011

Вы должны выбрать их вручную по linq для сущностей.Вот как сделать левое соединение между двумя таблицами:

var query = from m in context.Masters
            where m.Id == 1
            join c in context.Childs on m.Child.Id equals c.Id into leftJoin
            from x in leftJoin.DefaultIfEmpty()
            select new
                {
                    Id = x.Id,
                    Name = x.Name,
                    Child = x.Childs
                };

Кстати.если у ваших сущностей есть свойство, которое содержит значение PK от другой сущности, вы можете создать отношение в EF designer .В таком случае вы сможете использовать свойства навигации.

...