一尘不染

C#实体框架:如何在模型对象上组合.Find和.Include?

c#

我正在做mvcmusicstore练习教程。在为相册管理器创建支架(添加删除编辑)时,我注意到了一些东西。

我想优雅地编写代码,因此我正在寻找一种简洁的编写方式。

仅供参考,我正在使商店更通用:

专辑=项目

流派=类别

艺术家=品牌

这是检索索引的方式(由MVC生成):

var items = db.Items.Include(i => i.Category).Include(i => i.Brand);

这是检索要删除的项目的方式:

Item item = db.Items.Find(id);

第一个带回所有项目,并在项目模型中填充类别和品牌模型。第二个,不填充类别和品牌。

我如何编写第二个代码来进行查找并填充内部内容(最好在1行中)…从理论上讲,类似:

Item item = db.Items.Find(id).Include(i => i.Category).Include(i => i.Brand);

阅读 305

收藏
2020-05-19

共1个答案

一尘不染

您需要先使用Include(),然后从结果查询中检索单个对象:

Item item = db.Items
              .Include(i => i.Category)
              .Include(i => i.Brand)
              .SingleOrDefault(x => x.ItemId == id);
2020-05-19