【问题标题】:EF1 navigation properties not working?EF1 导航属性不起作用?
【发布时间】:2010-11-17 21:10:16
【问题描述】:

我的实体模型是从现有数据库生成的。 EF 拾取并隐藏了一个多对多连接表。

这种关系肯定有效,因为此查询按预期返回了 2 个用户。

    public IQueryable<User> FindUsersByGroupID(int group_id)
    {
        return db.Users.Where(u => u.Groups.Any(g => g.Group_ID == group_id));
    }

但是,当定位到属于上述结果集的用户时,组导航属性计数为 0。我不应该明确加入.. 对吗?

    public User FindUserByID(int id)
    {
        return db.Users.First(u => u.User_ID == id);
    }

【问题讨论】:

    标签: asp.net entity-framework .net-3.5


    【解决方案1】:

    试试

    db.Users.Include("Groups").First(u => u.User_ID == id);
    

    或在使用后加载它

    if (!user.Groups.IsLoaded)
    {
        user.Groups.Load();
    }
    

    【讨论】:

    • 酷,谢谢。您知道这是否与 EF4 中的行为相同吗?当另一个表还没有被包含时,一个导航属性就暴露出来了,这似乎违反直觉。
    • @ryan 使用 EF4,您可以激活 LazyLoading 自动执行此操作
    • 现在插入呢?我需要将新用户与组关联。我希望能够设置 User user = new User(); user.Groups.Group_ID = 1;也许我的部分用户类构造函数中需要一种 Include()?
    • @ryan 您必须将 Group 实体添加到 Groups EntityCollection
    • 谢谢 :) 我试图用 = 而不是 .Add
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多