实体代码首先为零或一到零或一个关系

时间:2015-09-29 15:10:42

标签: entity-framework relationship code-first

首先将实体代码管理为零或一到零或一个关系的解决方案是什么?

我想在这两个实体上有一个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;}
}

1 个答案:

答案 0 :(得分:0)

有很多关于此的文章,所以我建议您在提出这些一般性问题之前再阅读this文章和Google。