我在使用ASP.NET Web API逐个更新数据库中的1列时遇到了问题。我试图查询PUT仅更新行中的一个值,而不是将其余部分设置为null。我创建了一个单独的模型在控制器外接收更新,以便我可以逐个执行操作。当我在控制器中运行这行代码 db.Entry(user).State = EntityState.Modified;
时出现错误。请问有什么建议可以帮我解决这个问题吗?
这是我在put方法中使用的单独ViewModel:
namespace WebAPI.Models.ViewModels
{
public class UserViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
这是我的控制器使用传入的ViewModel参数调用方法:
public HttpResponseMessage PutUser(int id, UserViewModel user)
{
HttpResponseMessage response;
if (db.User.IsInRole("Admin"))
{
try
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!UserExists(id))
{
response = new HttpResponseMessage(HttpStatusCode.NotFound);
return response;
}
else
{
throw;
}
}
response = new HttpResponseMessage(HttpStatusCode.NoContent);
return response;
}
这是我的DBContext
文件:
public partial class Entities : DbContext
{
public Entities()
: base("name=Entities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<User> Users { get; set; }
}
}