【问题标题】:EF how to include subobject to queryEF如何包含要查询的子对象
【发布时间】:2014-02-08 14:56:04
【问题描述】:

我有两个表:用户和令牌,如下所示。

现在我使用 EF 编写查询,它采用 Token 对象,但 Token 对象中的子对象 User 为空。我应该如何修改我的查询以获取带有用户对象的令牌?

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

【问题讨论】:

  • 您返回的对象应该具有user 对象,例如tokenObj.User!如果关系存在
  • @sarwar026:请看我更新的代码。
  • 我明白了。但是不明白为什么是null如果有关系!
  • 你可能会看到stackoverflow.com/questions/21065177/…问题的答案

标签: c# .net sql-server entity-framework orm


【解决方案1】:

实体框架不会自动将所有相关对象从数据库中加载出来——如果有很多表和很多关系,这可能会非常昂贵。您要么需要告诉 EF 在查询中加载关联的User(这称为急切加载),要么需要启用延迟加载,以便 EF 在首次访问时加载它。 (有关详细信息,请参阅 MSDN 文章 Loading Related Entities

这是一个 Eager Loading 的示例(未彻底测试,因为我没有你的模型):

using (var db = new AccountDbContext())
{
    Token tok = db.Tokens.Include(n => n.User)
       .FirstOrDefault(p => tokenValue == p.Value) == 0);
}

【讨论】:

    猜你喜欢
    • 2022-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多