我有两个表:用户和令牌,如下所示。
现在我使用EF编写查询,它接受令牌对象,但是令牌对象中的子对象用户是空的。我应该如何修改我的查询以获得用户对象的令牌?
using (var db = new AccountDbContext())
{
Token tok = db.Tokens
.FirstOrDefault(p => tokenValue == p.Value) == 0);
if (tok.User == null)
{
//I'm there, but I 100% of sure thata this relation exists
throw new Exception();
}
}
发布于 2014-02-08 09:03:26
实体框架不会自动将所有相关对象从数据库中加载出来--如果有许多具有大量关系的表,这可能会非常昂贵。您需要告诉EF在查询中加载关联的User
(这称为急切加载),或者您需要启用延迟加载,以便EF在首次访问它时加载它。(有关详细信息,请参阅MSDN文章加载相关实体。
下面是一个急切加载的例子(没有经过彻底的测试,因为我没有您的模型):
using (var db = new AccountDbContext())
{
Token tok = db.Tokens.Include(n => n.User)
.FirstOrDefault(p => tokenValue == p.Value) == 0);
}
https://stackoverflow.com/questions/21647497
复制相似问题