在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();
这对我来说很好,可以在索引视图中显示记录。现在,我想在编辑时在相应的文本框中显示相同的记录。
您可以尝试使用.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也有从内存中检索实体的逻辑。如果我们需要从内存中提取实体,但随后又需要在数据库中获取部分或所有相关实体(反之亦然),这将变得非常复杂。