2009-06-29 73 views
0

我正在使用NHibernate作爲ASP.NET MVC應用程序的數據訪問層。我也使用結構圖作爲IoC容器。我已經配置Structre map來創建一個會話工廠作爲一個單獨的會話並且基於每個請求創建會話(InstanceScope.Hybrid)。我能夠完成基本的CRUD操作。NHibernate無法從數據庫中獲取新數據

現在,我有一個每30秒運行一次的後臺進程,它使用一些存儲庫(進而使用會話)。由於某些原因,此後臺進程無法提取新數據。也許我錯過了一件簡單的事情。我嘗試了谷歌搜索,但無法找到有用的東西。如果有人指出我正確的方向,那真的會有幫助。

編輯:

我不知道我是否啓用了二級緩存,我與NHibernate的一個新手,我的Hibernate配置文件在下面粘貼。

<?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> 

我想知道的主要問題是,如果有這已經是在使用NHibernate典型的web應用程序中使用的設計/設計模式。如果我的數據庫設置是從不同的應用程序更新,將使用無狀態會話解決問題?

回答

0

我通過創建一個單獨的控制檯應用程序來解決這個問題。不是一個優雅的解決方案,但它仍然有效。謝謝你的答案。

1

如果您啓用了二級緩存,但有一個後臺進程正在更新數據庫而不通過NHibernate,那麼您將不會看到這些更改通過。在這種情況下,使用二級緩存並不合適。

0

每次(30秒),您在使用後臺應用程序中的防火牆之前是否都使用新的功能?

在hibernate配置中啓用show_sql,或使用hiberante分析器或sql分析器查找sql​​是否每次被觸發(30秒)。

很難用你的描述來解決你的問題。