实体框架包括没有查询

时间:2015-08-11 21:21:24

标签: c# entity-framework

我可以在没有查询的情况下包含相关对象吗?

使用查询:

Item item = _db.Items
               .Include(i=>i.Supplier)
               .Where(....)

没有查询:

var item = new Item { Name = "Test", SupplierId = 1 };
item.Include(i => i.Supplier); //something like that...

1 个答案:

答案 0 :(得分:0)

我真的不明白你的问题......

首先其中返回多个对象

IQueryable<Item> items = _db.Items
               .Include(i=>i.Supplier)
               .Where(....)

然后结果是 IQueryable ,项目和供应商对象暂时没有实现。例如,您必须使用 ToList()来启用实现和查询数据库。

对于包含方法,它只是一个 join 来查询Items和Suppliers关系。 但包含扩展方法仅适用于IQueryable,而不适用于实体。

供应商通常是项目实体的简单导航属性

class Item
{
public virtual Supplier Supplier {get; set;}
}

因此您可以使用

进行访问
var item = new Item { Name = "Test", SupplierId = 1 };
item.Supplier = ....

如果你想与你建立关系必须得到供应商

item.Supplier = _db.Suppliers.First(s => s.SupplierId = 1);