我正在尋找使用Delta包裝器對Web api控制器操作進行部分更新。MVC4 WebApi OData Delta <T>未填充GUID或Int字段
我有一個像這樣的模式:
public class Person
{
public Guid PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsActive { get; set; }
public int NumVacationDays { get; set; }
public double Salary { get; set; }
}
我有API控制器像這樣:
public void Put(Delta<Person> person)
{
var p = person.GetEntity();
Person existingPerson = _repository.Get(p.PersonId);
person.Patch(existingPerson);
_repository.Update();
return;
}
我做像這樣(使用招)的調用Web API
url: http://localhost:49933/api/Person (PUT)
Response Body
{
"PersonId": "b269c49f-8a90-41d6-b102-7cfba3812b1c",
"FirstName": "sample string 2",
"LastName": "sample string 3",
"IsActive": true,
"NumVacationDays": 5,
"Salary": 6.1
}
The controller is hit and al
l除NumVacationDays(即0)和PersonId(默認爲00000000-00 00-0000-0000-000000000000)
有誰知道爲什麼GUID和INT字段不是從JSON填充?
Hi RaghuRam。謝謝回覆。爲了測試你的理論,我添加了兩個新列:CompanyId,它是一個GUID,NumDaysTaken是一個int。兩者都作爲默認發送(與上面相同)。 GetChangedPropertyNames的結果有其他4列(名字,姓氏,IsActive,薪水) –
您是否使用針對JsonMediaTypeFormatter而不是ODataMediaTypeFormatter的Delta?使用Delta 與json格式化程序不是受支持的方案。我已經測試過odata格式化程序以及guid和int的工作。 –
嗨紅葉,是的,我是。我將研究odata格式化程序。謝謝! –