2015-12-18 19 views
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文件?

回答

1

SQL Server Compact 3.5不是爲ASP.NET設計的,也不是支持的。這很可能是你得到錯誤的原因。改爲使用SQL Server Compact 4.0 SP1。

+0

感謝您的提示,我不知道。當然,我不打算在生產中使用SQL CE,它僅用於測試目的。按照您的建議,我將切換到SQL Server Compact 4.0 SP1,如果我再次遇到此問題,我會通知您。待機:D –

+0

接受的答案:我們使用完全成熟的SQL Server測試了我們的系統,並且問題不再發生,因此,如您所述,原因是SQL Server Compact 3.5與ASP.NET不兼容。再次感謝。 –

相關問題