C#实体框架删除子表(关系)数据并更新父表



我正在使用实体框架更新记录

用户(父级( 电子邮件(子级(
用户ID 电子邮件ID
用户名 UserId
电子邮件地址

问题是有两个不同的User实例指向同一个UserId

作为一种变通方法,您可能会执行以下操作:

private async Task updateUser(User _user) {
var user = _configurationDbContext.Users
.Include(x => x.Emails)
.Where(x => x.UserId == _user.UserId)
.FirstOrDefault();

_configurationDbContext.Entry(_user).State = EntityState.Detached;
user.Emails.RemoveAll(x => x.UserId  == _user.Id);
_configurationDbContext.Users.Update(user);
return await _configurationDbContext.SaveChangesAsync();
}

注意,调用_configurationDbContext.Entry(_user).State = EntityState.Detached;后,EF将不再自动跟踪对_user的更改

试试这个:

var user = _configurationDbContext.Users
.Include(x => x.Emails)
.Where(x => x.UserId == _user.UserId)
.FirstOrDefault();
user.Emails.RemoveAll(x => x.UserId  == _user.Id);
// or you can try
user.Emails.Clear();
_configurationDbContext.Entry(user).CurrentValues.SetValues(_user);
return await _configurationDbContext.SaveChangesAsync()

最新更新