流畅的nhibernate自动设置忽略继承属性

本文关键字:继承 属性 设置 nhibernate | 更新日期: 2023-09-27 17:50:24

我正在使用fluent nhibernate映射以下模型:

public abstract class BasePermission : Entity
{
    public abstract string Name { get; }
}
public class ApproveMembershipPermission : BasePermission
{
    public override string Name
    {
        get { return Resources.Permissions.ApproveMembership; }
    }
}

我已经配置为使用每个类一个表的层次结构策略,除了一件事之外,一切都很好。我不知道怎么告诉FNH忽略Name的性质。目前我已经生成了这样的映射:

<class name="BasePermission" table="BasePermissions">
    <id name="Id" unsaved-value="0">
      <column name="Id" />
      <generator class="hilo">
        <param name="max_lo">1000</param>
      </generator>
    </id>
    <discriminator type="String">
      <column name="Type" />
    </discriminator>
    <property access="property" name="Name">
      <column name="Name" />
    </property>
    <subclass name="ApproveMembershipPermission" discriminator-value="ApproveMembershipPermission">
      <property access="property" name="Name">
        <column name="Name" />
      </property>
    </subclass>
</class>

我已经尝试下一个映射覆盖:

public class BasePermissionMap : IAutoMappingOverride<BasePermission>
{
    public void Override(AutoMapping<BasePermission> mapping)
    {
        mapping.IgnoreProperty(x => x.Name);
    }
}
public class ApproveMembershipPermissionMap : IAutoMappingOverride<ApproveMembershipPermission>
{
    public void Override(AutoMapping<ApproveMembershipPermission> mapping)
    {
        mapping.IgnoreProperty(x => x.Name);
    }
}

它导致以下映射:

<class name="BasePermission" table="BasePermissions">
    <id name="Id" type="System.Int64" unsaved-value="0">
      <column name="Id" />
      <generator class="hilo">
        <param name="max_lo">1000</param>
      </generator>
    </id>
    <discriminator type="String">
      <column name="Type" />
    </discriminator>
    <subclass name="ApproveMembershipPermission" discriminator-value="ApproveMembershipPermission">
      <property access="property" name="Name" />
    </subclass>
</class>

Name仍然映射在approvembershippermission类中。有人能帮助API忽略这个Name属性吗?

流畅的nhibernate自动设置忽略继承属性

这似乎对你的情况有帮助:
Fluent Nhibernate自动映射继承和忽略抽象属性