2012-02-12 1 views
1

Я попытался вставить строку в свой объект в 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." 

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

Я использую Visual Studio 2010 SP1 Professional, Firebird 2.5 с провайдером .NET, C#, .NET Framework 4.0

Это не работает для каждого объекта в базе данных.

+0

предоставьте более подробную информацию в своем вопросе. –

+0

Какие вам нужны детали? –

ответ

6

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

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

+0

Спасибо, что вы меняете mach. Вы показали мне правильный способ исправить мою проблему. –

Смежные вопросы