如何包含相关实体,但只选择前1名?
public EntityFramework.Member Get(string userName)
{
var query = from member in context.Members
.Include(member => member.Renewals)
where member.UserName == userName
select member;
return query.SingleOrDefault();
}
答案 0 :(得分:2)
根据MSDN:
"请注意,目前无法过滤加载了哪些相关实体。包含将始终引入所有相关实体。"
http://msdn.microsoft.com/en-us/data/jj574232
此功能还有一个uservoice项目:
使用匿名对象的方法是有效的,即使它不是如你所希望的那样干净:
public Member GetMember(string username)
{
var result = (from m in db.Members
where m.Username == username
select new
{
Member = m,
FirstRenewal = m.Renewals.FirstOrDefault()
}).AsEnumerable().Select(r => r.Member).FirstOrDefault();
return result;
}
FirstRenewal属性仅用于使EF6将第一次续订加载到Member对象中。因此,从GetMember()方法返回的成员仅包含第一次续订。
此代码会为数据库生成一个查询,因此它可能对您来说足够好。