2009-06-29 6 views
0

ASP.NET MVC 애플리케이션의 데이터 액세스 레이어로 NHibernate를 사용하고 있습니다. 또한 IoC 컨테이너로 Structure Map을 사용하고 있습니다. 구조 팩토리를 싱글 톤으로 생성하고 요청 단위 (InstanceScope.Hybrid)로 세션을 생성하기 위해 Structre 맵을 구성했습니다. 기본 CRUD 작업을 정상적으로 수행 할 수 있습니다.NHibernate가 데이터베이스에서 새 데이터를 가져올 수 없습니다.

이제는 30 초마다 실행되는 백그라운드 프로세스가 있습니다.이 프로세스는 세션을 사용하는 몇 개의 리포지토리를 사용합니다. 그리고이 백그라운드 프로세스는 어떤 이유로 새 데이터를 선택할 수 없습니다. 어쩌면 나는 간단한 것을 놓치고있다. 나는 인터넷 검색을 시도했지만 유용한 것을 찾을 수 없었다. 누군가가 나를 올바른 방향으로 가리키면 정말 도움이 될 것입니다.

편집 :

내가 두 번째 레벨 캐시를 사용할 수있는 경우에, 나는 NHibernate에있는 초보자입니다 확실하지 않다, 내 최대 절전 모드 설정 파일 아래에 붙여 넣습니다. 이미 자 NHibernate를 사용하여 일반적인 웹 애플리케이션에 사용되는 설계/디자인 패턴이있는 경우

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> 
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> 
    <property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=Map.db;Integrated Security=True</property> 
    <property name="show_sql">true</property> 
    <mapping assembly="Infrastructure"/> 
    </session-factory> 
</hibernate-configuration> 

내가 알고 싶은 중요한 것은입니다. 그리고 내 데이터베이스 설정이 다른 응용 프로그램에서 업데이트되면 Stateless 세션을 사용하여 문제를 해결할 수 있습니까?

답변

0

이 문제를 해결하기 위해 별도의 콘솔 응용 프로그램을 만들어서이 문제를 해결했습니다. 우아한 해결책이 아니었지만 여전히 효과가있었습니다. 모든 답변을 주셔서 감사합니다.

1

두 번째 수준의 캐시를 사용할 수 있지만 NHibernate를 거치지 않고 데이터베이스를 업데이트하는 백그라운드 프로세스가있는 경우 이러한 변경 사항을 확인할 수 없습니다. 이 시나리오에서는 두 번째 수준 캐시를 사용하는 것이 적절하지 않습니다.

0

백릿그 응용 프로그램에서 화재 조사를하기 전에 매번 새 sssion을 사용합니까 (30 초)?

최대 절전 모드 구성에서 show_sql을 활성화하거나 hiberante profiler 또는 sql profiler를 사용하여 SQL이 매번 (30 초) 실행되는지 여부를 찾습니다.

설명에 대한 문제를 해결하기가 어렵습니다.

관련 문제