在实体框架中引用任何nhibernate映射?

时间:2014-01-10 13:36:07

标签: mapping

我想知道如何在实体框架中创建映射, 这与流利的nhibernate中的ReferenceAny类似。

我得到了什么:

实体:

public abstract class Document : Entity
{
   public virtual ICollection<Feature> Features { get; set; }
}

public class DocumentA : Document 
{
}

public class DocumentB : Document
{
}

public class Feature : Entity
{
    public IEntity Super { get; set; }
    public virtual string Value { get; set; }
}

在要素映射中:

ReferencesAny(x => x.Super)
    .EntityTypeColumn("type")
    .EntityIdentifierColumn("super")
    .AddMetaValue<DocumentA>("DoucmentA")
    .AddMetaValue<DokumentB>("DocumentB")
    .IdentityType<int>();

在DocumentA映射中:

HasMany<Feature>(x => x.Features)
   .AsSet()
   .Inverse()
   .KeyColumn("super").Not.KeyNullable()
   .Where("type = 'DocumentA'")
   .Fetch.Join()
   .Cascade.AllDeleteOrphan();

在DocumentB映射中:

HasMany<Feature>(x => x.Features)
   .AsSet()
   .Inverse()
   .KeyColumn("super").Not.KeyNullable()
   .Where("type = 'DocumentB'")
   .Fetch.Join()
   .Cascade.AllDeleteOrphan();

这种映射为我提供了清晰的功能表,其中包含列:id,value,type,super, 其中type作为鉴别器,super表示文档id。

如何在EF中映射它以实现具有相同列的Features表,因为我无法更改它?

0 个答案:

没有答案