UIレイヤで遅延ロードを使用するとセッションの問題が発生しました。nhibernate遅延ロード
public List<Visites> GetVisitesClientQuery(string idClient)
{
using (ISession session = Repository.TSession())
{
var results = (from v in session.Query<Visites>()
where v.Clients.Idclient == idClient
select v);
return results.ToList<Visites>();
}
}
(DAO層における)コードの
私の作品は、私は、UI層にそれを呼び出す:
var visites = VisiteManager.Instance.GetVisitesClientQuery(lstClients.SelectedValue.ToString());
foreach (Visites v in visites)
{
foreach (Factures f in v.Factures)
{
...
}
}
v.Facturesコレクションです。
私はそれを使用して呼び出すと(セッションが開かれています)、この場合は動作しません。このエラーがあります。
Initializing[NHibernateTest.BusinessObjects.Visites#036000007935]-
failed to lazily initialize a collection of role:
NHibernateTest.BusinessObjects.Visites.Factures, no session or session was closed
UIレイヤーでレイジーローディングコールを処理することはできますか?
しかし、私は私のビュー層でnhibernate関数を使うべきではないと思った? ...関連性の高いリンクhttp://stackoverflow.com/questions/1379500/nhibernate-removes-dalが見つかりました。私はすべての層でかなり失われています... –
あなたのリポジトリ実装はあなたのDALです。ただし、これはあなたのDALがあなたのセッションを作成することを意味するものではありません。 Sessionをリポジトリに渡すことができます。 –