1
내 XML 파일에서 property-ref를 설정할 때만 예외가 발생합니다.기본 키 이외의 속성에 대한 일대 다 nhibernate property-ref 설정이 실패합니다.
초기화 [Domain.Entities.R는 # 12345] 게으르게 역할의 컬렉션을 초기화가 실패했습니다 : Domain.Entities.R.LP, 아무 세션이나 세션은 그렇게하지 무엇
LP.hbm.xml
----------
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Domain.Entities" assembly="Domain">
<class name="LP" table="LP">
<id name="Id">
<column name="Id" sql-type="int" not-null="true"/>
</id>
<property name="AnotherField"/>
<property name="PaymentDate"/>
<property name="PaymentAmount"/>
</class>
</hibernate-mapping>
R.hbm.xml
---------
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Domain.Entities" assembly="Domain">
<class name="R" table="R">
<id name="Id">
<column name="Id" not-null="true"/>
</id>
<property name="AnotherField"/>
<set name="LP">
<key column="AnotherField" property-ref="AnotherField" />
<one-to-many class="Domain.Entities.LP" not-found="ignore" />
</set>
</class>
</hibernate-mapping>
IQueryable<Entities.R> query = _db.Query<Entities.R>();
var query2 = _db.Query<Entities.LP>().ToList();
var queryResults = query.ToList();
Iesi.Collections.Generic.ISet<Entities.LP> lp;
try
{
lp = queryResults.First().LP; <--- this fails with exception
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
var lp2 = _db.Query<Entities.LP>().Take(100); <-- works just fine
}
폐쇄되지 않았다 lp2가 정상적으로 설정되었지만 lp가 실패하는 이유는 무엇입니까? 나는 데이터 모델이 이상적이지 않다는 것을 알고 있지만, 지금 당장 나는 그것을 사용해야 만한다. nhprof에서 xml 파일에서 property-ref를 제거하면 SQL 테이블 (잘못된 값으로 다시 데이터를 얻지 못함)을 호출하지만 실패하지는 않습니다. 이것은 property-ref가 설정된 경우에만 발생합니다.
도움을 주시면 감사하겠습니다. 이것은 NH와의 첫 번째 공연입니다.
응답 해 주셔서 감사합니다. ISession은 IoC에서 생성됩니다. 내가 이해할 수없는 것은 내가 가지고있는 함수의 컨텍스트에서 유효한 ISession이 있다는 것입니다. 이 작업 ... ISession이 사용되었습니다. var lp2 = _db.Query() .Take (100); 이것은 작동하지 않으며 ISession에 액세스 할 수 없습니다. var lp = queryResults.First(). LP; 질문은 ... 왜 한 줄은 다른 곳에서는 액세스 할 수없는 반면에 ISession에 액세스 할 수 있습니까? 다시 한번 감사드립니다. –
ben
<일대 클래스 = "Domain.Entities.LP는"/ "무시"= -없는>을 당신은이 라인이 작동한다고 말합니다. var lp2 = _db.Query() .Take (100); 하지만 평가되지 않은 LINQ 식입니다. 실제로 lp2의 값에 액세스하려고 시도 했습니까 (즉, 반복)? 또한 라인은 LP 개체를 쿼리합니다. 그것은 문제가 아닙니다. 문제는 R 개체의 LP 모음에 액세스하는 것입니다. 내가 틀린 것을 읽지 않는 한 그들은 완전히 다른 두 가지 질문입니다. –