我有一个项目我正在使用通过实体数据模型连接的数据库,我使用DBcontext来创建和更新实体。
我的创建方法(如下)工作正常。
[HttpPost]
public IHttpActionResult PostCustomer([FromBody] Customer Customer)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
using (var dbCtx = new CustomerDBEntities())
{
dbCtx.Customers.Add(Customer);
dbCtx.SaveChanges();
}
return CreatedAtRoute("DefaultApi", new { id = Customer.id }, Customer);
}
但是我的更新方法什么也没做。我没有得到错误或任何似乎没有任何事情发生。它没有更新值。 代码就是这个
[HttpPut]
public IHttpActionResult UpdateCustomer([FromBody] Customer Customer)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Customer cust;
var ctx = new CustomerDBEntities();
cust = ctx.Customers.Where(s => s.id == Customer.id).FirstOrDefault<Customer>();
if (cust != null)
{
cust.Customer_Name = Customer.Customer_Name;
cust.email = Customer.email;
cust.Customer_address = Customer.Customer_address;
}
ctx.Entry(cust).State = System.Data.EntityState.Modified;
ctx.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = Customer.id }, Customer);
}
当我以前使用SQL命令直接转到数据库时,它工作正常,但自从我更改它后它就停止了工作。
非常感谢任何帮助。
答案 0 :(得分:1)
在属性级别添加更改
context.Entry(Customer).Property(cust => cust.Customer_Name).IsModified = true;
此处更多详情https://msdn.microsoft.com/en-us/data/jj592677
此处也回答了类似的问题https://stackoverflow.com/a/15339512/1481690
答案 1 :(得分:1)
删除此行代码。
print'run %sr()'%('doze','ca')[0<a<b<3]
EF跟踪对上下文中实体所做的更改,您无需告诉它已被修改。