Mapping 实体框架6一对一导航属性

Mapping 实体框架6一对一导航属性,mapping,entity-framework-6,one-to-many,one-to-one,Mapping,Entity Framework 6,One To Many,One To One,当导航属性中没有其父属性的键时,如何映射该属性 我是说 有一份班级合同。 这是一个产品销售合同,需要一个产品才能存在。TB_合同包含ProductId。 产品存在时没有合同,TB_产品也没有合同 在某些情况下,产品可以包含在多个合同中,这就是为什么它在bd中被建模为多对一。但在我们的类中,它必须是一对一 public class Contract { ... public Product Product { get; set; } ... } public class Pro

当导航属性中没有其父属性的键时,如何映射该属性

我是说

有一份班级合同。 这是一个产品销售合同,需要一个产品才能存在。TB_合同包含ProductId。 产品存在时没有合同,TB_产品也没有合同

在某些情况下,产品可以包含在多个合同中,这就是为什么它在bd中被建模为多对一。但在我们的类中,它必须是一对一

public class Contract
{
   ...
   public Product Product { get; set; }
   ...
}

public class Product
{
    ...
    public Contract Contract { get; set; }
    ...
}

table tb_Contract
(
   idContract,
   idProduct
)

table tb_Product
(
   idProduct,
   description,
)
我希望我的类产品有它所链接的合同,如果有


我先用代码。如何将其映射到EF6上?

无法将其映射为一对一关联。这是一个一对多的设计协会。因此,如果有什么不同的话,设计应该改变,使之成为一对一

实体框架通过以下方式对一对一关联进行建模。拥有一对一关联的任何其他方法都是通过业务逻辑强制执行它们

在代码中,这意味着
产品
有一个
订单的集合
和一个检查该集合中项目数量的验证规则