实体框架代码首先重命名列/密钥

时间:2017-08-11 17:20:35

标签: c# entity-framework

我有一个Employee表,可以将员工与他们的联系信息联系起来。我把它设置成这样:

    [ForeignKey("AddressId")]
    public virtual Address Address { get; set; }

    [ForeignKey("HomePhoneId")]
    public virtual PhoneNumber HomePhone { get; set; }

    [ForeignKey("WorkPhoneId")]
    public virtual PhoneNumber WorkPhone { get; set; }

    [ForeignKey("CellPhoneId")]
    public virtual PhoneNumber CellPhone { get; set; }

但是,当我尝试从数据库加载员工时,它会自动重命名列,完全覆盖属性:

Invalid column name 'PhoneNumber_Id'.

Invalid column name 'PhoneNumber_Id1'.

Invalid column name 'PhoneNumber_Id2'.

Invalid column name 'Address_Id'.

为什么要这样做?

1 个答案:

答案 0 :(得分:0)

为每个导航属性都正确指定了ID。似乎问题与链接回Employee的每个PhoneNumberAddress对象上的导航属性有关。我现在不需要它们,因此删除这些导航属性可以解决问题。