Фреймворк Entity не работает. Нетипичная ошибка - PullRequest
1 голос
/ 12 февраля 2012

Я попытался вставить строку в свою сущность в Entity Framework. Это хорошо работает для первой операции вставки, но не работает для второй операции вставки. Я использую Framework 4, C # и базу данных FireBird. Это моя часть кода

rec = new T_MEDIAPLAN_REC();
//
//... initialization for T_MEDIAPLAN_REC
//
BossTVEntities.AddToT_MEDIAPLAN_REC(rec);
BossTVEntities.SaveChanges();

Это дает мне это исключение после второго вызова SaveChanges ():

"The changes to the database were committed successfully, but an error occurred 
while updating the object context. The ObjectContext might be in an inconsistent 
state. Inner exception message: AcceptChanges cannot continue because the 
object's key values conflict with another object in the ObjectStateManager. 
Make sure that the key values are unique before calling AcceptChanges."

Я пытался увидеть базу данных. В целевом объекте есть две вставленные записи с разными идентификаторами. Итак, я не знаю, в чем причина такого поведения.

Я использую Visual Studio 2010 SP1 Professional, Firebird 2.5 с поставщиком .NET, C #, .NET Framework 4.0

Это не работает для каждой сущности в базе данных.

1 Ответ

6 голосов
/ 12 февраля 2012

Эта ошибка обычно возникает, когда первичный ключ генерируется в базе данных, но EF не настроен должным образом, считывает значение обратно из базы данных после вставки. В результате оба вставленных элемента заканчиваются пустым ключом в контексте EF, вызывая ошибку.

Поскольку вставленные данные имеют разные ключи в базе данных, ваша схема БД представляется правильной. Вам нужно проверить свою EDM, чтобы увидеть, что StoreGeneratedPattern в столбце PK установлено на Identity или что-то еще в Firebird.

...