我有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查询?
答案 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;
}