从我的 jQuery Ajax 正确调用了我的 Web API Put 方法,但 C# 代码不保存更新。json 对象不具有 MEMBERS 实体的所有属性。上下文不会保存对数据库的任何更改。
public void Update(string id, MEMBERS obj)
{
var memToUpdate = context.MEMBERS.Find(obj.MEMBERID);
if (memToUpdate != null)
{
context.Entry(memToUpdate).CurrentValues.SetValues(obj);
int result = context.SaveChanges();
System.Diagnostics.Debug.WriteLine("save result:" + result);
}
}
此代码将起作用,但是如何使上下文更新 JSON 对象中的 MEMBERS 实体的所有属性而不像这样指定?
public void Update(string id, MEMBERS obj)
{
MEMBERS memToUpdate = context.MEMBERS.Find(obj.MEMBERID);
if (memToUpdate != null)
{
//context.Entry(memToUpdate).CurrentValues.SetValues(obj);
memToUpdate.FIRSTNAME = obj.FIRSTNAME;
memToUpdate.LASTNAME = obj.LASTNAME;
int result = context.SaveChanges();
System.Diagnostics.Debug.WriteLine("save result:" + result);
}
}
查询:
var data = {
MEMBERID: "B745",
FIRSTNAME: "TESTPUT",
LASTNAME: "UPDATED WEBAPI"
};
var json = JSON.stringify(data)
$.ajax({
url: 'api/Members/' + data.MEMBERID,
type: 'PUT',
contentType: "application/json; charset=utf-8",
data: json,
success: function (results) {
alert("Success");
}
})
我的问题更多关于如何进行 Web API Put 部分更新。我从 oData 中了解了使用 Delta<> 类型的 Patch 方法。我从 nuget 安装了 Web API oData,但 VS 抱怨类型或命名空间 Delta 不存在。有没有人遇到过这个问题?