2015-05-30 58 views
1

使用System.Data.SQLite和LINQ to Entities,我無法做一個簡單的更新。LINQ to SQLite無法更新:「存儲更新,插入或刪除語句影響了意想不到的行數」

此代碼

using (Entities context = new Entities()) { 
    var Obj = context.MyTable.Where(m => m.Title.StartsWith("Alaska")).FirstOrDefault(); 
    Obj.Artist = "A"; 
    context.SaveChanges(); 
} 

拋出該異常

A first chance exception of type 'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException' occurred in EntityFramework.dll 

Additional information: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries. 

我該如何解決這個問題?

我在一個孤立的測試項目中,所以周圍沒有其他東西在發生。

回答

1

該數據庫是SQL Server數據庫的自動轉換,事實證明SQLite中不支持UNIQUEIDENTIFIER數據類型,但該表仍將列和主鍵定義爲UNIQUEIDENTIFIER。每當我更新具有UNIQUEIDENTIFIER鍵的表時,我都會收到此錯誤。用INT鍵更新表格時,它是可以的。

解決方案是將這些列的數據類型更改爲TEXT。然後在.NET映射類中,數據類型從Guid變爲String,所以我必須相應地調整代碼,但現在它可以工作。

相關問題