필터를 사용하여 매핑을 사용하고 있습니다.Session.Get 및 Session.Load 명령이 필터를 무시합니다.
하지만 내 개체를 유지하려고 할 때 먼저 스냅 숏을 가져 오려고합니다 (내 ID가 문자열이기 때문에).
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="DomainLayer.General" assembly="DomainLayer">
<class name="Fund" table="OPENA_BriefW" lazy="false">
<id name="Id" column="`BRWNUMMER`" type="string" >
</id>
<property name="Name" column="`BRWNAAM`" type="string" />
<property name="Contact" column="`BRWNAAM2`" type="string" />
<property name="Address" column="`BRWADRES`" type="string" />
<property name="City" column="`BRWSTAD`" type="string" />
<property name="Zip" column="`BRWPOST`" type="string" />
<property name="Phone" column="`BRWTELEFOON`" type="string" />
<property name="Fax" column="`BRWTELEFAX`" type="string" />
<property name="Iban" column="`brw_iban`" type="string" />
<property name="BankAccount" column="`BRWBANKNU`" type="string" />
<property name="Swift" column="`brw_swift`" type="string" />
<property name="ReceiveOffice" column="`BRWONTVKANT`" type="int" />
<property name="RegionDirection" column="`BRWGEWESTDIR`" type="int" />
<many-to-one name="Country" class="DomainLayer.General.CodeDescription" fetch="join" not-found="ignore">
<formula>'ALG'</formula>
<formula>'0'</formula>
<formula>'WG030'</formula>
<column name="`BRWLAND`" />
<formula>:LanguageFilter.Id</formula>
</many-to-one>
</class>
</hibernate-mapping>
필터가 보듯이 : LanguageFilter.Id가 문제의 원인입니다. 정상적인 .List()를 수행하면 문제가 발생하지 않습니다.
하지만 지속될 때, 먼저 기금이 이미 예/아니오로 존재하는지 확인하고 싶습니다. .Get (Id로).
그런 다음 오류가 발생하여 스냅 샷을 검색 할 수 없습니다. 내 쿼리에서 그는 대체하지 않습니다 : LangaugeFilter.Id를 내 세션에 설정된 유효 값으로 설정하십시오.
나는 그렇게처럼 내 세션에 대한 필터를 사용 : 여기
session.EnableFilter("LanguageFilter").SetParameter("Id", 1);
필터 데프 매핑입니다 :
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<filter-def name='LanguageFilter' >
<filter-param name='Id' type='System.Int32' />
</filter-def>
</hibernate-mapping>
이 포스트 (주석 4) http://ayende.com/blog/3993/nhibernate-filters 말씀에 Session.get 및로드 무시 필터.
변수가 필요하기 때문에 대안이 있습니까?