2011-12-15 209 views
2

我使用SQLite數據庫和實體框架4.1代碼優先。實體框架4.1和SQLite

以下錯誤發生時db.SaveChanges稱爲 System.Data.EntityException: The underlying provider failed on Open. ---> System.Data.SQLite.SQLiteException: The database file is locked

我的代碼:

using (var db = new Dal.Database()) 
{ 
    var newObj = db.Sheet.FirstOrDefault(e => e.SheetId == SheetId); 
    if (newObj == null) 
     newObj = new Dal.Sheet(); 

    newObj.SheetTypeCode = SheetTypeCode; 
    newObj.SheetCount = SheetCount; 

    db.Sheet.Add(newObj); 
    db.SaveChanges(); 
} 

請幫助我。 謝謝

+0

您正在運行哪個版本的C#? – 2011-12-15 02:15:16

回答

0

SQLite是一個單一的數據庫文件是否正確?該應用是否有權限訪問該文件?而且該文件絕對不是隻讀的?

所以這個錯誤發生在SaveChanges上,這意味着你的代碼正在成功地從你的數據庫中讀取數據,但不能寫入?

這些可能對你有答案,

Entity Framework with SQLite exception: The underlying provider failed on Commit

'The database file is locked' with System.Data.SQLite

嘗試找出錯誤,如果你嘗試沒有你從中讀取首先插入新的數據到數據庫中會發生什麼?

是否存在內部異常?

+0

感謝您的快速回放。 – user902271 2011-12-15 02:56:50