实体框架自定义导航属性

时间:2017-09-18 13:17:42

标签: c# entity-framework properties

有没有办法在ClassA.BId下面映射到ClassB.BetaIdBetaId中的ClassB不是主键。因此,以下列方式的映射最终会在“ ForeignKeyAttribute无效”异常中结束。请注意,这两个类中没有外键关系。出于某种原因,我不得将ClassA.BId映射到ClassB.Id,因为这两个字段不相关,但我需要自定义地图ClassA.BIdClassB.BetaId,因为这两个字段是相关的。但是,Id中的ClassB必须保留为主键。

注意:我正在使用Entity Framework 6

[Table("A")]
public class ClassA{
    [Key]
    public int Id { get; set; }


    public int BId { get; set; }

    [ForeignKey("BId")]
    public virtual B B { get; set; }
}

[Table("B")]
public class ClassB{
    [Key]
    public int Id { get; set; }

    public int BetaId { get; set; }
}

1 个答案:

答案 0 :(得分:1)

如果B.BetaID是唯一的,您可以将其声明为Key。否则,EF Core支持引用备用密钥的外键属性。见https://docs.microsoft.com/en-us/ef/core/modeling/alternate-keys