如何使用find获取对象同时还包含另一个对象?

时间:2014-02-06 20:22:43

标签: c# asp.net asp.net-mvc

我必须获取像这样的对象

var fetchedObject = ds.Products.Find(id);

但我还需要添加Include(),因为Products包含一个Supplier对象。我给出的代码就像

var fetchedObject = ds.Products.Include(“Supplier”).SingleOrDefault(i => i.Id == id);

我如何将两者结合起来,同时也包括(“供应商”)?

2 个答案:

答案 0 :(得分:0)

我不明白你的问题是什么?您的第二行代码是“查找”具有该ID的对象,还包括供应商。我想你可能会误解Include的作用。包含意味着它只会进行一次数据库往返,并将检索导航属性“Supplier”,以便通过执行操作在下一行中查询:

var supplier = fetchedObject.Supplier;

或者你想用它做什么。你尝试过第二行吗?

如果您没有在那里编写include子句,那么将对lached对象的供应商进行延迟评估。这意味着如果您决定使用供应商,则必须再次访问数据库。

答案 1 :(得分:0)

你做不到。 Find做了一些与Include之类的内容冲突的优化。也就是说,如果已经从数据库中提取了查询,则find将始终从本地存储返回该对象而不发出查询。