2011-12-15 164 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