LINQ to Entities不支持指定的类型成员'EntityKey'

时间:2010-03-24 16:31:33

标签: entity-framework linq-to-entities entity

我有2个实体“UserProfile”和“Agent”,它们是1-many关系。我想通过提供userProfileEntityKey来查询以获取代理列表。当我运行它时,我得到了“LINQ to Entities中不支持指定的类型成员'EntityKey'错误。

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 个答案:

答案 0 :(得分:1)

我会去缓解路线p.UserProfile.UserId = UserId是你的解决方案。

这假设UserId是表的主键。

按实体键搜索并不会使其成为概念性的。当您呈现以不同方式呈现数据库层的图层时,会出现概念性部分。

我是否误解了你对概念的看法?

答案 1 :(得分:0)

试试这个......

首先,覆盖实体对象中的Equals()(和GetHashCode())方法。如果两个实体对象的类型相同且ID相等,则它们应该相等。

接下来,使用此操作

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;
}