在MVC中,我设计了一个视图,我可以从多个表中绑定数据,即我得到了 我在索引中显示的3个不同表格的不同记录。
现在点击编辑我想将这些数据发送到编辑视图,这是我遇到麻烦的地方。在我之前的表格中,我能够用 db.find()只引用一个表,并根据其复合键,我能够找到与该表对应的所有数据。
我想通过点击编辑从3个表中获取记录,我可以在我的索引视图中成功绑定。
以下是我的控制器代码:
objMyObj.MyModel = db.TableName.find(allcompositekeyshere);
根据我的说法,我无法从db.find的多个表中获取记录,因为它只能引用一个表。所以,为此,我想要一些不同的逻辑。 任何帮助将不胜感激。谢谢提前..
下面是我的linq查询,通过该查询,我可以从city表中获取所有记录以及来自country table的州名和州名表中的州名。
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();
我可以在索引视图中显示记录。 现在,我想在编辑时在相应的文本框中显示相同的记录。
答案 0 :(得分:3)
您可以尝试使用.Include()
来包含对相关表格的引用。
var items = db.TableName
.Include("FTable1")
.Include("FTable2")
.Where(allcompositekeyshere).ToList();
You cannot use Find directly - 查找无法使用包含。
这是EF团队所说的
我们已经决定不实现这一点,因为调用带有包含的查找的语法不会比等效的LINQ查询简单得多:
ctx.Products.Include(p => p.Category).Single(p => p.Id == 3)
Find还具有从内存中检索实体的逻辑(如果已经加载)。如果我们需要从内存中提取实体,然后针对部分或全部相关实体访问数据库(反之亦然),则会变得非常复杂。