2011-12-15 32 views
2

SQLiteデータベースとEntity Framework 4.1コードファーストを使用しています。 db.SaveChangesは私のコード System.Data.EntityException: The underlying provider failed on Open. ---> System.Data.SQLite.SQLiteException: The database file is lockedEntity Framework 4.1とSQLite

を呼び出したときに

次のエラーが発生しました:

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#のバージョンは? –

答えて

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

+0

取引上の問題でした。 – user902271

+0

私はトランザクションの問題に関する他のいくつかのstackoverflow答えを見つけましたが、トランザクションを使用しているようには見えませんか? EFはおそらくトランザクションを使用していますが、これはどのように影響しますか? – peter

関連する問題