Entity Framework Обнаружены конфликтующие изменения.Это может произойти при попытке вставить несколько объектов с одним и тем же ключом - PullRequest
5 голосов
/ 28 августа 2011

У меня есть сущность User с парой отношений one-to-one и many-to-many и Identity primary key и generic repository, которые создаются при каждом запросе.

У меня есть форма регистрации с клиентом ипроверка сервера, и я решил отключить проверку клиента, чтобы проверить, как сервер будет вести себя в таком случае.

Я отключил проверку клиента, чтобы проверить форму регистрации, и поместил некоторые недопустимые значения, чтобы я вернулся, говоря, что у меня естьнекоторые ошибки, после того, как я исправил это, я получил очень интересную ошибку, говоря:

_context.SaveChanges(); //towing the error below:

Conflicting changes detected. This may happen when trying to insert multiple entities with the same key

Это было странно для меня, потому что я отделил сущность User, но когда я нашел это Как очиститьКонтекст объекта Entity Framework? , поэтому вместо отсоединения только User объекта я решил попытаться очистить контекст объекта, полностью запустив этот код:

var objectStateEntries = this.objectContext
                             .ObjectStateManager
                             .GetObjectStateEntries(EntityState.Added);

    foreach (var objectStateEntry in objectStateEntries)
    {
        if(objectStateEntry.Entity != null)
           this.objectContext.Detach(objectStateEntry.Entity);
    }

Так что после этого все работало хорошо, и я не получилConflicting changes detected ошибка больше, но мне все еще интересно, почему такая ситуация имела место, может быть, кто-то может объяснить?

1 Ответ

0 голосов
/ 26 октября 2012

Вы можете найти свой ответ здесь :

context.ObjectStateManager.GetObjectStateEntries(System.Data.Entity.EntityState.Added| System.Data.Entity.EntityState.Unchanged);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...