我首先使用实体框架数据库来构建我的数据库模型。到目前为止,我已经研究过单个表/实体,它已经非常顺利地通过查询获取数据并将其保存在列表中以显示数据。
现在我处于这样一种情况:我需要加入几张桌子并发现自己陷入了一些困境。我想我可以简单地加入我需要的实体,因为他们互相拥有一个外键,但我找不到返回我想要的集合的查询,这基本上是所有表中的所有列。
在t-sql中,我只需对键上的不同表执行LEFT JOIN。我考虑过创建一个视图,然后在这个视图上构建模型,但我必须能够更新数据,并且根据我的理解,数据库中的视图不是那么直接用EF更新。
我希望做下面的查询,但是因为我需要更新不同的表格,我想知道是否有人有一个优雅的解决方案,如何做到这一点。或者是我根本不了解加入EF的事情?
using(var _ctx = new EFEntities())
{
var queryResult = from a in _ctx.a
join b in _ctx.b
on a.b_ID equals b.ID
join c in _ctx.c
on b.c_IDequals c.ID
select new
{
//columns I want
};
}
答案 0 :(得分:0)
正如评论中已经提到的那样,你的类之间应该有导航属性,但是如果你真的想要展平数据但是维护可以在别处更新的对象那么你可以这样做:
using(var _ctx = new EFEntities())
{
var queryResult = from a in _ctx.a
join b in _ctx.b
on a.b_ID equals b.ID
join c in _ctx.c
on b.c_IDequals c.ID
select new
{
a = a,
b = b,
c = c
};
}