小编Mar*_*kan的帖子

流畅的NHibernate AutoMapping与鉴别器

我正在尝试使用鉴别器映射继承,但子类没有鉴别器值.如何使用AutoMappings解决它?

域对象如下:

public abstract class Item : GuidIdentityEntity {
   public virtual string Name { get; set; }
}

public class Product : Item {}
public class RawMaterial : Item {}
Run Code Online (Sandbox Code Playgroud)

配置如下:

AssemblyOf<Item>()
    .IgnoreBase<GuidIdentityEntity>();
    .IncludeBase<Item>();
    .Setup(setup => {
        setup.DiscriminatorColumn = type => "Discriminator";
        setup.IsDiscriminated = type => type == typeof(Item);
        setup.SubclassStrategy = type => (type == typeof(Item)) 
            ? SubclassStrategy.Subclass 
            : SubclassStrategy.JoinedSubclass;
    });
Run Code Online (Sandbox Code Playgroud)

映射的结果是:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="property" auto-import="true" default-cascade="none" default-lazy="true">
  <class xmlns="urn:nhibernate-mapping-2.2" name="Solution.Core.Products.Item, Solution.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2e5ef41be3839ad7" table="`Item`">
    <id name="Id" type="System.Guid, mscorlib, …
Run Code Online (Sandbox Code Playgroud)

nhibernate inheritance nhibernate-mapping fluent-nhibernate

5
推荐指数
1
解决办法
2919
查看次数