나는 내 asp.net mvc 응용 프로그램에서 NHibernate를 연결했습니다그것은 세션을 처리하지 나쁜가요
ISession은 저장소에 주입됩니다. 대화마다 세션이 필요하므로 요청 패턴 당 세션을 사용할 수 없습니다.
NHibernate 세션은 여러 HTTP 요청에서 사용됩니다. 개체 그래프가 크고 모든 요청에 전체 그래프를로드하고 싶지 않습니다. 그래서 Session은 사용자 HttpSession에 저장됩니다.
ISession의 라이프 사이클
는 StructureMap로 구성되어 있습니다 : 대화의 끝에For<ISession>().LifecycleIs(new HttpSessionLifecycle()).Use(x =>
{
var sessionSource = x.GetInstance<ISessionSource>();
return sessionSource.CreateSession();
});
내가 ISession을 취소
Session.Clear()
를 호출합니다.
사용자가 새 대화를 만들면 StructureMap에서 새 ISession을 만듭니다. 나는 Session을 처리하는 방법을 찾지 못했습니다.
그럼 처분하지 않는 것이 좋습니까? 이 연결이 데이터베이스에 연결되어 있습니까?
IDisposable을 구현하지 않은 경우 ... 그럼 Dispose()가없고 Disposing이 의미가 없습니다. 문서가 뭐라고 말합니까? –
ISession은 일회용이므로 모범 사례를 폐기해야합니다. 하지만 응용 프로그램의 세션이 여러 페이지 요청에 걸쳐 있어야합니다. – ms007
대화 패턴 당 세션이 필요하기 때문에 요청 패턴 당 세션을 사용할 수 없다고 말하면 동일한 요청에 대해 여러 HTTP 요청에서 세션을 보류하려는 것입니다 사용자? 유스 케이스를 더 자세히 설명 할 수 있다면 문제를 이해하는 것이 도움이 될 것입니다. 감사. –