实体框架tph映射属性的多个条件

时间:2014-12-01 09:38:26

标签: c# entity-framework orm ef-code-first tph

我正在开发一个实现实体框架6代码优先模式的Web应用程序。 在我的项目中,由于某些原因,我已经使用TPH,TPT和TPC模式完成了表继承,但现在我遇到了这样的问题:

1)我创建了一个具有一些属性的基表表1,其中一些是" key"用于标识继承类型的列

public class Table1 : BaseEntity
{
    public Table1()
        : base()
    {

    }

    public int Table1Id { get; set; }
    public int ItemId { get; set; }
    public string TableName { get; set; }
    public string ColumnName { get; set; }
    public string Value { get; set; }
}

我必须在独立实体的某些属性中实现此基表,例如:

public class OtherEntity {

    public OtherEntity()
        : base()
    {
        ...
    }

    ...
    public virtual ICollection<Table1> Table1Ref1 { get; set; }
    public virtual ICollection<Table1> Table1Ref2 { get; set; }
    public virtual ICollection<Table1> Table1Ref3 { get; set; }
}

public class OtherEntity1 {

    public OtherEntity1()
        : base()
    {
        ...
    }

    ...
    public virtual ICollection<Table1> Table1Ref1 { get; set; }
    public virtual ICollection<Table1> Table1Ref2 { get; set; }
    public virtual ICollection<Table1> Table1Ref3 { get; set; }
}

理想的实现是我可以为所有权限使用相同的类(实体)和表,并且在映射中我将指定,例如,列Table1Ref1将获得TableName的值为&#39; OtherEntity&#39;和ColumnName的值为&#39; Ref1&#39;和实体键值的ItemId;列Table1Ref2具有相同的TableName,ItemId和ColumnName的值为&#39; Ref2&#39;等。

是否可以实施此解决方案?

0 个答案:

没有答案