0
我正在使用NHibernate(版本4.0.0.4000)的MVC 4項目。目前,我將會話工廠配置爲使用駐留在C:\ Db目錄中的SQL CE 3.5文件。隨機查詢拋出異常:「沒有足夠的存儲空間來完成此操作」
string connString = "Data Source=C:\Db\myDb.sdf; Max Database Size=3096; Persist Security Info=false";
factory = Fluently.Configure()
//per Sql CE 4.0 usare MsSqlCeConfiguration.MsSqlCe40
.Database(MsSqlCeConfiguration.Standard.ConnectionString(connString)
.ShowSql()
.MaxFetchDepth(3)
.Driver<MySqlServerCeDriver>()) // FIX truncation 4000 chars
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
.ExposeConfiguration(c =>
{
c.SetProperty("cache.provider_class", "NHibernate.Cache.HashtableCacheProvider");
c.SetProperty("cache.use_query_cache", "true");
c.SetProperty("command_timeout", "120");
})
// FIX BUG per SqlCompact quando si salvano colonne identity
.ExposeConfiguration(c => c.SetProperty("connection.release_mode", "on_close"))
.BuildSessionFactory();
這我遇到的問題是,有時(像每天一次)我在隨機查詢的執行得到以下錯誤(即使是簡單的選擇查詢!):
not enough storage space is available to complete this operation
其餘的時間,一切都完美無缺地工作。不用說,我擁有超過300GB的可用空間。我做了我的搜索,但發現與我的上下文有關的錯誤絕對沒有。我開始認爲db .sdf文件本身有問題:我使用SQL Server 2008 R2創建了它,但隨後使用「Database .NET 3.5」進行了一些更改,這對於小的更改是一個非常方便的工具。難道是這樣做,我以某種方式損壞了.sdf文件?
感謝您的提示,我不知道。當然,我不打算在生產中使用SQL CE,它僅用於測試目的。按照您的建議,我將切換到SQL Server Compact 4.0 SP1,如果我再次遇到此問題,我會通知您。待機:D –
接受的答案:我們使用完全成熟的SQL Server測試了我們的系統,並且問題不再發生,因此,如您所述,原因是SQL Server Compact 3.5與ASP.NET不兼容。再次感謝。 –