2 차 레벨 캐시에 appfabric 1.1과 함께 NHibernate 3.2를 사용하고 있습니다. 동일한 테이블에 매핑 된 2 개의 클래스가 있습니다. 첫 번째 클래스 AFullEntity (샘플에서는 MonitorLayoutData)은 경량 클래스 인 두 번째 클래스 (MonitorLayout)를 상속합니다. MonitorLayoutData에는 기본 클래스에없는 무거운 속성이 포함되어 있습니다. 예를 들어 : NHibernate 2 차 레벨 캐시가 같은 테이블에있는 엔티티 맵을 무효화하지 않습니다.
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Entities.MonitorLayout,Entities" table="MonitorLayouts2" lazy="false" schema="dbo" polymorphism="explicit">
<cache usage="nonstrict-read-write"/>
<id name="Id" column="MonitorLayout_ID" type="int">
<generator class="native" />
</id>
<property name="Name" column="MonitorLayout" type="string" />
<property name="UserId" column="User_ID" type="int" />
<property name="IsPublic" column="IsPublic" type="Boolean" not-null="true" />
<property name="ViewGuid" column="ViewGuid" type="string" not-null="true" />
<property name="TreeNode" column="TreeNode" type="string" />
<property name="IncludeNodeChildren" column="IncludeNodeChildren" type="Boolean" />
</class>
<class name="Entities.MonitorLayoutData,Entities" table="MonitorLayouts2" lazy="false" schema="dbo" polymorphism="explicit">
<cache usage="nonstrict-read-write"/>
<id name="Id" column="MonitorLayout_ID" type="int">
<generator class="native" />
</id>
<property name="Name" column="MonitorLayout" type="string" />
<property name="UserId" column="User_ID" type="int" />
<property name="IsPublic" column="IsPublic" type="Boolean" not-null="true" />
<property name="ViewGuid" column="ViewGuid" type="string" not-null="true" />
<property name="TreeNode" column="TreeNode" type="string" />
<property name="IncludeNodeChildren" column="IncludeNodeChildren" type="Boolean" />
<property name="LayoutData" column="LayoutData" type="BinaryBlob" not-null="false"/>
</class>
</hibernate-mapping>
그 클래스
이 문서에 노트와 같은 선택한 유형 만 개체를 검색하기 위해 명시 적 다형성을 사용 : "두 개의 다른 클래스들이 동일한 테이블로 매핑 될 때 Explicit 다형성이 유용하다 (이것은 허용" 테이블 열의 하위 집합을 포함하는 "가벼운"클래스).엔티티가 캐싱되면 문제가 발생합니다. AFullEntity를 업데이트 할 때 변경 사항은 lightweight 클래스의 보고서가 아니며 이는 우리에게 큰 문제입니다. 하위 클래스 나 확장 같은 다른 메커니즘을 시도하지만 NHibernate는 나를 위해 필요하지 않은 discriminator 요소를 선언하도록 강요합니다.
이 방법이 있습니까?
하위 분류 대신 [지연 속성] (http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties)을 보셨습니까? –