使用实体名称的NHibernate映射继承

时间:2019-03-05 09:15:15

标签: inheritance nhibernate mapping

这是我的情况- 使用NH,我尝试将相同的两个类(用户和公司(从Party继承))映射到相同的Partys表,并将它们映射到自己的Users和Companies表中。 据我了解,这样做的方法是使用实​​体名称选项。

问题是-即使仅定义一次映射,我也遇到异常,说我尝试映射到未映射类型。 我的映射: 派对是抽象的

public PartyMapping() : ClassMapping<Party>
{
  Table("Parties");
  Id(d => d.Id, m => m.Generator(Generators.Assigned));  

  EntityName("SomePartyName");

  Discriminator(d=>
                 {
                   d.Column("PartyType");
                   d.Force(true);
                   d.Insert(true);
                   d.NotNullable(true);

                   d.Type(NHibernate.NHibernateUtil.String);
                 });

  Property(d => d.SaleAmountUSD);
} 

public UserMapping() : SubclassMapping<User>
{
  EntityName("SomeUserName");
  DiscriminatorValue("User");
}

public CompanyMapping() : SubclassMapping<Company>
{
  EntityName("SomeCompanyName");          
  DiscriminatorValue("Company");
}

映射编译失败,并显示消息“无法扩展未映射的类:聚会”

如果我省略EntityName(“ SomePartyName”);从我的Party映射中,然后该映射可以编译,但是显然,我也无法将Party实体映射到另一个表。

我想我需要找出一种方法来为派生类的映射指定要使用的超类实体名称。 但是我还不知道怎么做。

0 个答案:

没有答案