Entity framework 在导航属性中向同一记录添加多个引用

Entity framework 在导航属性中向同一记录添加多个引用,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,在我的EF 6 Model First应用程序中,我有一个实体,该实体具有指向另一个实体的多对多导航属性。在第一个实体中,我需要在导航属性中向同一记录添加多个引用 第一个实体是“saleslistItem”,第二个实体是“warehouseItem”。通常这里会有一对一的关系,但例外的是,会有一些捆绑包,其中一个“saleslistItem”包含几个“warehouseItems”。“WarehouseItem”也可以包含在多个“salesListItems”中。在项目结束时,我的客户在测试时说

在我的EF 6 Model First应用程序中,我有一个实体,该实体具有指向另一个实体的多对多导航属性。在第一个实体中,我需要在导航属性中向同一记录添加多个引用

第一个实体是“saleslistItem”,第二个实体是“warehouseItem”。通常这里会有一对一的关系,但例外的是,会有一些捆绑包,其中一个“saleslistItem”包含几个“warehouseItems”。“WarehouseItem”也可以包含在多个“salesListItems”中。在项目结束时,我的客户在测试时说,“saleslistItem”必须能够由几种相同类型的“仓库物品”组成(比如两盒熏火腿)

这些数据在我的代码中有好几个地方使用。(即,销售从仓库中移除物品)如果我可以只添加几个相同的引用,我的代码就可以工作,无需任何修改。但是在导航属性的实现中使用了“hashtable”集合,该集合需要唯一的条目。这里有解决办法吗?由于数据量很小,因此性能是不相关的

如果没有这样的解决方法,是否可以将值与navigation属性的实例一起存储?也许它是作为联接表中的一个字段实现的

还有其他建议吗?
需要一个解决方案,以便客户支付账单的最后一部分

那么您当前有一个
1
1
SalesListItem到
WarehouseItem
通过
SalesListItem`中的外键?听起来你需要:

public class SalesListItem
{
    public virutal ICollection<SalesListWarehouseItem> WareHouseItems { get; set; }
}

public class SalesListWarehouseItem
{
    public virtual SalesListItem Parent{ get; set; }
    public virtual WarehouseItem WarehouseItem { get; set; }
    public int Quantity { get; set; } // maybe double?
}
公共类SalesListItem
{
公共虚拟ICollection仓库项目{get;set;}
}
公共类SalesListWarehouseItem
{
公共虚拟SalesListItem父项{get;set;}
公共虚拟仓库项目仓库项目{get;set;}
公共整数数量{get;set;}//可能是双精度?
}

不,我有一个多对多关系,但通常是1:1关系(大约90%的关系是1:1)。你的解决方案无论如何都可以使用。谢谢但首先,我将尝试将
Hashset
的用法切换到另一个集合。这将允许对同一仓库项目进行多次引用。我将在这里汇报结果。但首先我要庆祝圣诞节。圣诞快乐!呵呵,谢谢,让我知道它是如何与不同的收集。我猜你已经有一个连接表了,可能没有直接定义它?也祝你圣诞快乐:-圣诞假期后返回,我发现了以下问题:EF生成的联接表不能包含从一个记录到另一个记录的多个引用。因此,在导航属性中,我不能从一个源记录多次引用同一个目标记录。我不能让一个SaleListItem多次指向同一个仓库产品。我必须重写部分应用程序。生成的连接表上的主键是什么?将该表添加为当前形式的实体,然后将其更改为具有ID标识PK。然后您将能够有许多引用。PK是一个集群密钥,包含FK到SalesListItem和WarehouseItem,它们都是int。EF 6首先使用model生成它。我不想改变这个。我本可以在这个表中添加一个名为“GoIntoWithAmount”的额外字段,并完成som映射技巧等,但这不再是一件简单的事情,我将修改生成的代码。我最好改一下密码。