我在 Entity Framework 中遇到了关系问题,我很肯定大部分问题源于我无法为谷歌找到一个好的搜索短语。但是..这是问题...
我在现有数据库中有一组 5 个表。这些表的关系如下图所示。
在我的代码中(带有 Razor 的 MVC4,但无论语言如何都应该很明显发生了什么),我正在执行以下操作:
<p>Store: @Model.StoreName</p>
@foreach (var storeDepartment in Model.StoreDepartments)
{
<p>Department: @storeDepartment.Department.DepartmentName</p>
<p>Items:</p>
<ul>
@foreach (var storeDepartmentItem in storeDepartment.Department.StoreDepartmentItems)
{
<li>@storeDepartmentItem.Item.ItemName</li>
}
</ul>
}
问题是我从其他商店(以及两次)获取商品记录,其中 DepartmentID 与当前商店相同。(请不要问为什么我们为多个商店使用相同的 DepartmentID ......我无法回答)。
为了解释上述内容,假设 Store ABC 有一个部门 ID:1,名称:衬衫。在这个百货公司/商店有一个项目 ID:1,名称:Green Shirt。
商店 DEF 有一个部门 ID:1,名称:衬衫。在这个百货公司/商店中,有一个项目 ID:1,名称:Green Shirt,以及一个项目 ID:2,名称:Red Shirt。
当我在上面的代码中为商店 ABC 运行它时,它会显示:
商店:ABC
部门:衬衫
项目:
- 绿衬衫
- 绿衬衫
- 红衬衫
实体框架中是否有一种方法可以从部门检索 StoreDepartmentItems 的记录以考虑当前的 StoreID?
在此先感谢,埃文
编辑:为了清楚起见,我可以通过更改行来避免重复:
@foreach (var storeDepartmentItem in
storeDepartment.Department.StoreDepartmentItems)
至:
@foreach (var storeDepartmentItem in
storeDepartment.Department.StoreDepartmentItems.Where(a=>a.StoreID == Model.StoreID))
但是,这似乎给视图开发人员施加了更大的压力,这不是我的偏好。