我有两个关系表,它们是:
表用户 - 表区域
----------------- -----------------
' idUser ' ' idRegion '
'-------------- ' '---------------'
' email ' ' regionName '
'---------------' '---------------'
' password '
'---------------'
' user_name '
'---------------'
' phone_number '
'---------------'
' id_Region '
'---------------'
就我而言,它有三种插入和更新数据的状态。
所以,我已经做过的第一个案例,它很简单,第二个工作正常,但问题是当我第二次尝试更新时,在我的Regiontable内部创建了一个新行而不是更改选定的字段。
我的代码:
public HttpResponseMessage Update(UsersGetModel usersGetModel)
{
using (var context = new GoneDatabase())
{
try
{
var user = context.users.Where(a => a.idUser== usersGetModel.id).FirstOrDefault();
user.userName = usersGetModel.Name;
user.PhoneNumber = usersGetModel.PhoneNumber;
user.Region = new region{ regionName= usersGetModel.Region };
context.Entry(user).State = System.Data.Entity.EntityState.Modified;
context.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
答案 0 :(得分:0)
它正在创建一个新行,因为您通过在
构建新区域实例来实际告诉它user.Region = context.Set<Region>().Where(r => r.Name.Equals(usersGetModel.Region).SingleOrDefault();
相反,您需要从DbContext中检索现有的Region实例并使用它,如
{{1}}
一对夫妇注意到: