使用外键的实体框架选择是空的?

时间:2016-03-04 21:25:43

标签: c# entity-framework entity-framework-5

我的模型TreeTreeImage中有两个表,这些表之间的关系分别是一个,我在两个表中都有数据,这是数据库的第一个模型。

我遇到的问题是当我从表Tree中选择时,我可以看到TreeImage属性但它是空的,我希望它有一些值,因为表之间的关系确实存在,我认为我不应该Join TreeImage表,或者从一开始就拥有Relational Constrains的好处是什么。

我应该怎样做才能看到TreeUmage

的价值

实体:

enter image description here

enter image description here

树类

public partial class Tree
{
    public Tree()
    {
        this.TreeLeaves = new HashSet<TreeLeave>();
        this.UserTrees = new HashSet<UserTree>();
        this.TreeImages = new HashSet<TreeImage>();
    }

    public int TreeID { get; set; }
    public string TreeTitle { get; set; }
    public string TreeDescription { get; set; }

    public virtual ICollection<TreeLeave> TreeLeaves { get; set; }
    public virtual ICollection<UserTree> UserTrees { get; set; }
    public virtual ICollection<TreeImage> TreeImages { get; set; }
}

我的选择查询

 using (var db = new ...())
        {
            return (from tree in db.Trees
                    select tree).ToList();
        }

此代码生成此输出

   [{"TreeID":1,"TreeTitle":"Red Mable","TreeDescription":"Hello 
 ","TreeLeaves":[],"UserTrees":[],"TreeImages":[]},... 

我正在开展一个项目,要求我使用技术,我无法让自己走上正确的道路来解决这个问题。

1 个答案:

答案 0 :(得分:2)

尝试使用Include扩展方法。

using (var db = new ...())
{
    return (from tree in db.Trees.Include("TreeImages")
            select tree).ToList();
}

如果要使用lambda表达式,则必须添加:

using System.Data.Entity;

然后您就可以使用它:

db.Trees.Include(t => t.TreeImages)