我可以在没有查询的情况下包含相关对象吗?
使用查询:
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...
答案 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);