2010-03-24 79 views
0

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

回答

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

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

这是假设UserId是您的表的主键。

通过EntityKey进行搜索并不能使其成为概念。当你展示一个以不同方式呈现你的数据库层的图层时,这个概念性部分就会出现。

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

相关问题