0

我在 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))

但是,这似乎给视图开发人员施加了更大的压力,这不是我的偏好。

4

1 回答 1

0

从您的 StoreDepartmentItems 中删除 StoreId 虽然您的图表没有显示哪些是主键,但在我看来,您不需要它,因为 DepartmentId 映射到也具有 StoreId 的 StoreDepartment。

您的问题可能是一个 StoreDepartmentItem 可以与您当前结构的 2 个不同商店相关联

于 2013-05-25T07:04:08.973 回答