我遇到了一些與我的WebAPI有關的問題。C#Api刪除對象
我有以下型號。
MODELA
Guid id;
String name;
Guid ModelBId;
virtual ModelB ModelB;
ModelB
Guid id;
String name;
我創建與MODELA的2個實例的列表,每個實例有一個名字和具有相同的參考modelB,爲例:
obj1 = New ModelA("myName", "1edh-...");
obj2 = New ModelA("otherName", "1edh-...");
兩個對象都引用相同的ModelB對象,所以我將這兩個對象包含在列表中。現在
List<ModelA> myList = new List<ModelA>();
myList.Add(obj1);
myList.Add(obj2);
,如果我看「myList中」在調試器,我可以看到ModelB兩個引用,但是當我的控制器,它返回到我的客戶,他們中的一個將消失。
[HttpGet]
public IHttpActionResult Get(string id)
{
try
{
var myList = _uow.functionality.Get(id);
//myList contains two objects, just like the example
return Ok(myList);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
將JSON返回到我的用戶以下
[
{$id: 1,
id: 'ed32-...',
name: 'myName',
ModelB: { $id: 2,
$ref: 1,
id: '',
name: ''}},
{$id: 3,
id: 'e3df-...',
name: 'otherName',
ModelB: { $ref: 2 }}
]
爲什麼它從JSON中刪除我的ModelB它發送給我的客戶?
也許我不明白。它看起來像'ModelB'仍然存在於生成的json中。 –
@SamIam是的,ModelB在第一個關係上返回,但它被排除在第二個關係之外,並且被$ ref替換爲第一個關係的$ id –
Web API使用[tag:json.net]。某處必須啓用['PreserveReferencesHandling'](http://www.newtonsoft.com/json/help/html/PreserveReferencesHandlingObject.htm)。該設置允許在圖中的對象之間進行多對多的引用的序列化,方法是在圖中第一次遇到'$ id'屬性時標記每個對象,然後爲隨後的引用序列化一個'$ ref'屬性。 – dbc