Entity Framework, Как включить связанные объекты в этом примере - PullRequest
1 голос
/ 05 ноября 2010

У меня есть таблица AccountSecurity, которая представляет собой таблицу «многие ко многим», которая относится к сущностям счета и ценным бумагам. Когда я пишу запрос ниже, он возвращает все ценные бумаги, которые удовлетворяют условию where. Однако у каждого экземпляра Security в списке больше нет ссылки на AccountSecurity, из которой он получен. Поэтому, когда я делаю list [0] .AccountSecurity, он пуст. Есть ли возможность включить эту информацию? Я знаю, что могу переписать запрос, чтобы вместо него вернуть AccountSecurities и использовать .Include («Безопасность»), но мне интересно, можно ли это сделать другим способом.

var list = (from acctSec in base.context.AccountSecurities
            where acctSec.AccountId == accountId
            select acctSec.Security).ToList();

UPDATE

Конечно, если я сделаю два запроса, график будет заполнен правильно, должен быть способ сделать это за один раз.

var securities = (from acctSec in base.context.AccountSecurities
            where acctSec.AccountId == accountId
            select acctSec.Security).ToList();

//this query populates the AccountSecurities references within Security instances returned by query above
var xref = (from acctSec in base.context.AccountSecurities
            where acctSec.AccountId == accountId
            select acctSec).ToList();

Ответы [ 2 ]

6 голосов
/ 05 ноября 2010
var list = (from sec in base.context.Securities
                                    .Include("AccountSecurity")
            where sec.AccountSecurities.Any(as => as.AccountId == accountId)
            select sec).ToList();
1 голос
/ 05 ноября 2010

Попробуйте это:

var list = (from acctSec in base.context.AccountSecurities.Include("Security")
            where acctSec.AccountId == accountId
            select acctSec).ToList();

Затем просто используйте свойство Security по мере необходимости, и поскольку оно одновременно считывается AccountSecurities (один SQL с объединением), оно будет очень эффективным.

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