2011-04-18 1 views
3

을 상속 무시 :유창함 자 NHibernate automappings 내가 모델 다음지도에 능통 자 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에게 igore 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> 

내가 시도 다음 매핑 오버라이드 (override) : :

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); 
    } 
} 

을 그리고 다음지도에 이르게 : Currenty 나는 그런 매핑이 생성이

<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> 

이름이 여전히 ApproveMembershipPermission 클래스에 매핑됩니다. 아무도이 Name 속성을 무시하는 API를 도울 수 있습니까?

+0

이러한 어둠 속에서 순수 샷이다; 뭔가 가능한 한 모든 가능한 옵션과 순열을 가지고 놀아야한다고 생각합니다. IgnoreProperty 부분을 기본 클래스에서만 사용하거나 하위 클래스에서만 사용해야합니다. 어쩌면 하위 클래스의 속성을 가상으로 재 시도해보십시오. –

+0

유창한 nh의 버전은 무엇을 사용하고 있습니까? –

답변