Относительно исключения «Конфликт изменений в роли» - PullRequest
9 голосов
/ 16 мая 2010

На самом деле я получаю исключение

Конфликт изменений роли 'TableName' отношения 'DataModel.FK_TableName_RelateTableName' обнаружен

, когда вызывается метод ApplyChanges изObjectContext.Я понятия не имею, что это за исключение.Я просто хотел узнать причину этого исключения.

Ответы [ 2 ]

8 голосов
/ 28 ноября 2011

Я думаю, что вы получаете подобные исключения, если вы пытаетесь получить отношение внешнего ключа для одной и той же сущности дважды. Вот простой пример:

var tn = ctx.TableName.Where(t => t.TableNameId == 1).First();
var rel = new RelateTableName {TableName = tn, TableNameId = 2};
ctx.RelateTableName.AddObject(rel);

Здесь вы можете видеть, что я установил для свойства TableNameId значение 2, а для свойства TableName - объект с TableNameId, равным 1, поэтому структура сущности не может определить, какое отношение является правильным для размещения в базе данных.

0 голосов
/ 11 января 2014

Фактическая причина этой проблемы заключается в том, что когда мы обращаемся к любому SaveChanges, контекст должен быть правильно отправлен, чтобы перейти к следующему SaveChanges для вставки другой записи в БД в том же элементе с другим внешним ключом. Вам просто нужно добавить строку ниже после "context.SaveChanges ()"

context.Entry (ваш объект) .State = System.Data.Entity.EntityState.Detached;

Это разрешит конфликты. Многократная вставка в одном и том же контексте приводит к конфликтам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...