почему EF пытается добавить новую запись вместо редактирования? - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть следующий код:

        var currentUser = (from i in _dbContext.Users
                           where i.FirstName == user.FirstName && i.LastName == user.LastName
                               && i.Title == user.Title && i.Company == user.Company
                           select i).FirstOrDefault();

                        currentUser.Company = user.Company;
                        currentUser.CompanyUrl = user.CompanyUrl;
                        currentUser.Country = user.Country;

                        _dbContext.SaveChanges();

но я получил ошибку

{"Нарушение ограничения UNIQUE KEY 'IX_Users'. Невозможно вставить дубликат ключа в объекте 'dbo.Users'. Дубликат значения ключа (a8, b8, c8). \ r \ nОпределение завершено. "}

так, это говорит о том, что EF пытается добавить новую запись вместо редактирования текущей. Почему?

1 Ответ

3 голосов
/ 02 февраля 2012

Я думаю, что проблема будет сочетать user и currentUser.Он, скорее всего, обновляет ваш currentUser, но в то же время добавляет userПричина может заключаться в следующем:

currentUser.Company = user.Company;

Если у компании есть свойство навигации «Пользователи» и вы используете шаблон POCO, это соединит и Company, и user как новые объекты с контекстом.

Попробуйте это:

var currentUser = ...;

var company = new Company { Id = user.Company.Id };
_dbContext.Companies.Attach(company);

currentUser.Company = company;
...

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