首先将实体代码管理为零或一到零或一个关系的解决方案是什么?
我想在这两个实体上有一个nav属性。
我已经使用数据注释进行测试:
public class class1()
{
public int Id {get;set;}
public virtual Class2 Class2 {get;set;}
}
public class class2()
{
public int Id {get;set;}
public int? Class1Id {get;set;}
[Required, ForeignKey("Class1Id")]
public Class1 Class1 {get;set;}
}
我总是有一条错误消息:“Class1_Class2_Target :: Multiplicity在关系'Class2_Class1'中的角色'Class2_Class1_Target'中无效。因为Dependent Role属性不是关键属性,所以Dependent Role的多重性的上限必须是'*'“。
我发现样本有流畅的API,但如果有可能我想使用数据注释。实际上,对于使用流畅api的所有示例,都有一个导航属性,但是从类中删除了int外键:
class Class1Map : EntityTypeConfiguration<Class1>
{
public Class1Map()
{
this.HasKey(c => c.Id);
this.Property(c => c.Id)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.HasRequired(c1 => c1.Class2).WithRequiredPrincipal(c2 => c2.Class1);
}
}
public class Class1()
{
public int Id {get;set;}
public virtual Class2 Class2 {get;set;}
}
public class Class2()
{
public int Id {get;set;}
/* Missing Class2Id Property */
public virtual Class1 Class1 {get;set;}
}