なぜこれが起こっているのか誰か説明してもらえますか - クライアントとプロジェクトの間に1対多のマッピングがあります。
以下は、それぞれのマッピング ファイル内の 2 つの関係です。
クライアント:
<!-- Relationship with project -->
<bag name="projects" cascade ="all-delete-orphan" lazy="false">
<key column="client_id" />
<one-to-many class="Project" ></one-to-many>
</bag>
計画:
<many-to-one name="client"
class="Client"
column="client_id"
cascade="all-delete-orphan"
fetch="join"
not-null="false"
lazy="false" />
以下は、特定のクライアントを返す Web メソッドです。
public Client RetrieveEqualsClient(string propertyName, object propertyValue)
{
Client c = new Client();
ConfigureNHibernate();
using (ISession session = m_SessionFactory.OpenSession())
{
ICriteria criteria = session.CreateCriteria(typeof(Client));
criteria.Add(Expression.Eq(propertyName, propertyValue));
c = criteria.List<Client>()[0];
return c;
}
}
次のように aspx ページからメソッドを呼び出します。
$.ajax
(
{
type: "post",
url: "NHibernateWebService.asmx/RetrieveEqualsClient",
data: "{id: " + id + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (result) { alert("Failure: " + result.statusText); },
success: function (result) { alert(result); }
}
)
これにより例外が発生します: NHibernate LazyInitializationException: failed to lazily initialize a collection, no session or session was closed, here - //これは Client クラスにあります
public virtual IList<Project> projects
{
get { return c_projects ?? ( c_projects = new List<Project>()); }//Exception Occurs Here!
set { c_projects = value; }
}
この例外についてさまざまな質問をしましたが、うまくいきませんでした。