EF在数据库中创建不需要的字段

时间:2017-12-30 12:44:53

标签: entity-framework

我在构建.net mvc网站时遇到了麻烦。我有2个相关的对象,我正在努力正确链接它们。具体来说:

public class Address
{
    public int AddressId { get; set; }
    public string Street { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string PostCode { get; set; }

    [ForeignKey("AddressCategory")] // <-- EF adds field to below object's table
    public int AddressCategoryId { get; set; }

    public virtual AddressCategory AddressCategory { get; set; }
}

public class AddressCategory
{
    public int AddressCategoryId { get; set; }
    public string Description { get; set; }
}

[ForeignKey] 数据注释添加到地址对象会导致EF将 Address_AddressId 列添加到 AddressCategory table,我不想(或不需要)发生这种情况。

我试图省略ForeignKey属性,但后来我遇到其他错误,因为.net无法链接表(例如'字段列表'中的未知列'Extent1.AddressId')。另外,我无法使用:

var addresses = db.Addresses.Include(l => l.AddressCategory);  

在没有EF为AddressCategory表添加额外列的情况下,有没有办法链接2个表?

1 个答案:

答案 0 :(得分:0)

感谢@cloudikka的回复。经过多次反复试验后,我似乎只是通过省略任一对象的任何ForeignKey引用来使其工作。我让EF重建数据库并执行所有脚手架(CRUD表单),并且它们已经完美地创建。

我的看法是外键属性应该用于父子关系,但不能用于查找表。我非常了解asp.net mvc!