我有一些我不明白的东西。 This与我的情况类似。 我有BaseEntity,Product,Supplier,Contract和ProductSupplierForContract实体,都继承自BaseEntity。
基本实体:
public class BaseEntity
{
public int ID { get; set; }
// other properties that are not entities by themself
}
产品实体:
[Required]
public ICollection<Supplier> Suppliers { get; set; }
[Required]
public ICollection<ProductSupplierForContract> ProductSupplierForContracts { get; set; }
public ICollection<Contract> Contracts { get; set; }
供应商实体:
public ICollection<ProductSupplierForContract> ProductSupplierForContracts { get; set; }
public ICollection<Product> Products { get; set; }
ProductSupplierForContract实体:
public string ProductnumberValue { get; set; }
public Supplier Supplier { get; set; }
public int Supplier_Id { get; set; }
public Product Product { get; set; }
public int Product_Id { get; set; }
public Contract Contract { get; set; }
public int? Contract_Id { get; set; }
合同实体:
[Required]
public ICollection<Product> Products { get; set; }
public ICollection<Supplier> Suppliers { get; set; }
public ICollection<ProductSupplierForContract> ProductSupplierForContracts { get; set; }
以下情况必须是可能的,并且允许: 1个合同可以包含来自不同供应商的1个产品BUT的多个实例。 因此,我创建了ProductSupplierForContract(PSFC)实体,该实体将保持 1product-1supplier-1productnumber(值)-1contract 的这种关系。
当我编辑1个已有1个PSFC实例的现有产品,并添加另一个拥有另一个PK,ProductId和SupplierId的PSFC实例时,出现此错误:
{"Multiplicity constraint violated. The role 'ProductSupplierForContract_Product_Target' of the relationship 'ContractCare.Models.ProductSupplierForContract_Product' has multiplicity 1 or 0..1."}
我不明白为什么,因为不是这样我可以拥有
PSFC 1
PK 1
ProductId 1
SupplierId 1
PSFC 2
PK 2
ProductId 1
SupplierId 2
为什么我(如以上链接文章所述)在产品上具有多对多的PSFC关系?
感谢您的任何反馈! 此致。
答案 0 :(得分:1)
下面的链接可能会帮助您解决这个问题!
答案 1 :(得分:0)
在Aparna Gadgil提供的链接上,由Arturo Hernandez发表的评论之一解决了我所遇到的错误,因此由于我的原始问题是错误,因此我将其标记为已解决。
报价:
问题是应该为detachedChild.parent分配 attachParent。
foreach(var detachedEntity in detachedEntities)
{
attachedEntity.ChildEntities.Add(detachedEntity);
detachedEntity.ParentEntity = attachedEntity;
}
就我而言,我必须将父实体(我们正在更新的产品)附加到 ProductSupplierForContract.Product 。像答案中所建议的那样创建新实体对我来说已经是事实,而诸如附加它之类的其他事情并没有为我解决。
由于我没有发布有关执行此操作方式的任何代码,因此对帮助我并不是很有帮助,将来我一定会尝试变得更加具体:)。
致以问候,谢谢!