如何覆盖用于创建外键的实体框架代码第一约定

时间:2013-10-21 17:01:40

标签: entity-framework ef-code-first

我的item类中有一个名为vend_id的属性,当然EF认为它是供应商表的外键。它实际上应该是数据库中的外键,但由于我不知道的原因,db的设计者选择不将其作为外键。
我使用EF在本地计算机上创建db模式的副本。当EF创建数据库时,我想告诉它不要在vend_id列上创建外键。我怎么做?理想情况下,我不想重命名该属性,因为我的数据库中有几个这样的实例,这只会让它变得混乱。

谢谢你, 萨姆

1 个答案:

答案 0 :(得分:0)

如果Vendor表没有表Item的外键,则Items实体类中的Vendor实体不能具有导航属性。如果未在实体类Item中指定导航属性,则EF不会推断vend_id是外键。

更新

无法使用以下内容进行复制:

[Table("EntityA")]
public partial class EntityA
{
    public int Id { get; set; }
    public Nullable<int> EntityBId { get; set; }
    public string Description { get; set; }

    [ForeignKey( "EntityBId" )]
    public virtual EntityB EntityB { get; set; }

    // this is not created as a FK
    //  nor does EntityCId cause a FK
    public int EntityC_Id { get; set; }
}

[Table("EntityC")]
public class EntityC
{
    public EntityC()
    {
        EntitiesD = new HashSet<EntityD>();
    }

    public int EntityCId { get; set; }

    public string Name { get; set; }

    public virtual ICollection<EntityD> EntitiesD { get; set; }
}