为什么EF试图添加新记录而不是编辑?
问题描述:
我有以下代码:为什么EF试图添加新记录而不是编辑?
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尝试添加新的记录,而不是编辑电流。为什么?
答
我认为这个问题会结合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();
是这段代码执行如何? – 2012-02-02 19:26:30
public void RegisterUser(用户用户,字符串用户名,字符串密码) {/ *此代码* /}然后调用此方法 – John 2012-02-02 19:32:01