2015-05-30 3 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, и оказывается, что тип данных UNIQUEIDENTIFIER не поддерживается в SQLite, но в таблице все еще есть столбцы и первичные ключи, определенные как UNIQUEIDENTIFIER. Я получил эту ошибку, когда бы я обновил таблицу с ключом UNIQUEIDENTIFIER. При обновлении таблицы с ключом INT все было в порядке.

Решение заключалось в том, чтобы изменить тип данных этих столбцов на ТЕКСТ. Затем в классах отображения .NET тип данных изменяется от Guid до String, поэтому мне пришлось соответствующим образом адаптировать код, но теперь он работает.