在MVC中编辑时从多个表中获取数据

本文关键字:获取 数据 MVC 编辑 | 更新日期: 2023-09-27 18:01:47

在MVC中,我设计了一个视图,我可以从多个表绑定数据,即,我得到不同的记录从3个不同的表,我显示在我的索引。

现在点击编辑,我想把这些数据发送到编辑视图,这就是我面临的麻烦。在我早期的形式中,我能够使用db.find()来实现这一点,它只引用一个表,并且基于它的组合键,我能够找到与该表对应的所有数据。

我想从3个表中获得记录,点击编辑,我成功地能够在我的索引视图中绑定。

下面是我的控制器代码:

objMyObj.MyModel = db.TableName.find(allcompositekeyshere);

据我所知,我不能从db的多个表中获得记录。查找,因为它将只引用一个表。对于这个,我需要一些不同的逻辑。任何帮助都会很感激。提前感谢……

下面是我的linq查询,我能够从城市表中获得所有记录,从国家表中获得国家名称,从国家表中获得州名称。

return objSvc.GetCityIndexData().Select(ct =>
                    new CityInputModel()
                    {
                        CityID = ct.CityID,
                        StateID = ct.StateID,
                        CountryID = ct.CountryID,
                        Name = ct.Name,
                        CountryName = ct.CountryName,
                        StateName = ct.StateName
                    }).ToList();

这对我来说很好,可以在索引视图中显示记录。现在,我想在编辑时在相应的文本框中显示相同的记录。

在MVC中编辑时从多个表中获取数据

您可以尝试使用.Include()来包含对相关表的引用。

var items = db.TableName
              .Include("FTable1")
              .Include("FTable2")
              .Where(allcompositekeyshere).ToList();

你不能直接使用Find - Find不支持include。

这是EF团队说的

我们决定不实现这个,因为用Include调用Find的语法不会比等效的LINQ查询简单得多:

ctx.Products.Include(p => p.Category).Single(p => p.Id == 3)
如果实体已经加载,

Find也有从内存中检索实体的逻辑。如果我们需要从内存中提取实体,但随后又需要在数据库中获取部分或所有相关实体(反之亦然),这将变得非常复杂。