Entity Framework: выбор из нескольких таблиц - PullRequest
1 голос
/ 14 сентября 2011

У меня есть утверждение:

var items = from e in db.Elements
    join a in db.LookUp
    on e.ID equals a.ElementID
    where e.Something == something
    select new Element
    {
        ID = e.ID,
        LookUpID = a.ID
        // some other data get populated here as well
    };

Как видите, все, что мне нужно, это набор объектов Element с данными из обеих таблиц - Elements и LookUp.Это отлично работает.Но тогда мне нужно знать количество выбранных элементов:

int count = items.Count();

... этот вызов вызывает System.NotSupportedException:

"Сущность или сложный тип 'Database.Element' не может бытьсоздан в запросе LINQ to Entities. "

Как я должен выбирать значения из нескольких таблиц в один объект в Entity Framework?Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 14 сентября 2011

Вам не разрешено создавать класс Entity в вашей проекции, вы должны либо проецировать на новый класс, либо на анонимный тип

select new 
{
        ID = e.ID,
        LookUpID = a.ID
        // some other data get populated here as well
};
1 голос
/ 14 сентября 2011

Ваш код не работает вообще. Часть, которую вы думаете, работала, никогда не была выполнена. В первый раз вы выполнили его, когда позвонили Count.

Как говорит исключение, вы не можете построить отображенную сущность в проекции. Проекция может быть сделана только для анонимных или не отображенных типов. Также не понятно, зачем вам это вообще нужно. Если ваш класс правильно сопоставлен, вы должны просто позвонить:

var items = from e in db.Elements
            where e.Something == something
            select e;

Если LookupID является сопоставленным свойством вашего Element класса, оно будет заполнено. Если это не сопоставленное свойство, вы не сможете загрузить его одним запросом в Element.

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