Указанный член типа EntityKey не поддерживается в LINQ to Entities - PullRequest
0 голосов
/ 24 марта 2010

У меня есть 2 сущности "UserProfile" и "Agent", они имеют отношение 1-много. Я хочу сделать запрос, чтобы получить список агентов, предоставив userProfileEntityKey. Когда я его запустил, я получил сообщение об ошибке «Указанный тип элемента EntityKey не поддерживается в LINQ to Entities».

public IQueryable<Agent> GetAgentListByUserProfile(EntityKey userProfileEntityKey)
{
ObjectQuery<Agent> agentObjects = this.DataContext.AgentSet;

IQueryable<Agent> resultQuery =
                    (from p in agentObjects
                     where p.UserProfile.EntityKey == userProfileEntityKey
                     select p);
    return resultQuery;
}

Итак, как правильно это сделать? Я использую p.UserProfile.UserId = UserId? Если это так, то это больше не концептуально. Или я должен написать запрос объекта вместо запроса LINQ?

Ответы [ 2 ]

1 голос
/ 24 марта 2010

Я бы пошел более легким путем p.UserProfile.UserId = UserId - это ваше решение.

Предполагается, что UserId является вашим первичным ключом для таблицы.

Поиск по EntityKey не делает его концептуальным. Концептуальная часть приходит, когда вы представляете слой, который представляет ваш слой БД по-другому.

Я неправильно понял Вашу концептуальную точку зрения?

0 голосов
/ 24 марта 2010

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

Сначала переопределите методы Equals()GetHashCode()) в объектах сущности. Два объекта сущности должны быть равны, если они одного типа и их идентификаторы равны.

Далее используйте эту операцию

public IQueryable<Agent> GetAgentListByUserProfile(UserProfile userProfile)
{
    var agentObjects = this.DataContext.AgentSet;
    var results = (from p in agentObjects
                   where p.UserProfile == userProfile
                   select p);
    return results;
}
...