带有外键的实体框架选择为空?
Posted
技术标签:
【中文标题】带有外键的实体框架选择为空?【英文标题】:Entity Framework selection with foreign key is empty? 【发布时间】:2016-06-18 19:03:39 【问题描述】:我的模型Tree
和TreeImage
中有两个表,这些表之间的关系分别是一对多,我在两个表中都有数据,这是数据库优先模型。
我遇到的问题是,当我从表 Tree
中选择时,我可以看到 TreeImage
属性但它是空的,我希望这有一些值,因为表之间的关系确实存在,我不我不认为我应该 Join
TreeImage
表或者从一开始就拥有 Relational Constrains
有什么好处。
我应该怎么做才能从TreeUmage
看到一些价值
实体:
树类
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】:尝试使用 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)
【讨论】:
这行得通:return db.Trees.Include("TreeImages").ToList(); 我完全忘记了该方法采用的是字符串参数。对于那个很抱歉。很高兴你知道了。以上是关于带有外键的实体框架选择为空?的主要内容,如果未能解决你的问题,请参考以下文章