EF6与自定义外键和FK属性的流畅关系

时间:2018-04-19 17:32:31

标签: c# entity-framework

我尝试将现有项目迁移到EF,并且已经拥有严格的数据库结构和必需的属性集。我现在要解决的问题如下:

我有两个班级:

public class Entity
{
    public virtual long ID {get;set;}
    public virtual long ContragentID {get;set;}
    public virtual Contragent {get;set;}
}

public class Contragent
{
    public virtual long ID {get;set;}
    public virtual long EntityID {get;set;}
    public virtual Entity {get;set;}
}

使用以下实体映射:

    public class ClassContragentAccountMap : EntityTypeConfiguration<Contragent>
{
    public ClassContragentAccountMap()
    {
        // Primary Key
        HasKey(t => t.ID);
        // Table & Column Mappings
        ToTable("contragent");
        Property(t => t.ID).HasColumnName("id");        
        Property(t => t.EntityID).HasColumnName("e_id");    

        HasOptional(t => t.Entity).WithOptionalDependent(t => t.Contragent);
    }
}

public class ClassLegalEntityAccountMap : EntityTypeConfiguration<Entity>
{
    public ClassLegalEntityAccountMap()
    {
        // Primary Key
        HasKey(t => t.ID);

        // Table & Column Mappings
        ToTable("entity");
        Property(t => t.ID).HasColumnName("id");
        Property(t => t.ContragentID).HasColumnName("contragentid");
    }
}

问题是关系抛出了未找到Entity_ID列的异常。有没有办法为关系指定FK,因为属性似乎在这里不起作用?我也尝试过使用:

HasOptional(t => t.Entity).WithOptionalDependent(t => t.Contragent).Map(t=> t.MapKey("e_id"));

然而它与已经定义的&#39; e_id&#39;冲突。属性。我需要关系和存在的财产。

有没有办法为关系指定FK并在类中保留ID属性?

1 个答案:

答案 0 :(得分:0)

我可以选择重建关系ID属性:

public virtual long ContragentID => Contragent?.ID;

public virtual long EntityID => Entity?.ID;

但我想知道还有其他办法吗。