0
네비게이션 속성이 내 odata 결과에 반영되지 않지만 그 속성에 값을 할당하려고합니다. 여기에 코드가 있습니다.네비게이션 속성이 반영되지 않음
for (var x = 1; x <= 5; x++)
{
var mainEntity = new EdmEntityObject(entityType);
mainEntity.TrySetPropertyValue("Id", "AllKey" + x.ToString());
mainEntity.TrySetPropertyValue("UserName", "AccountId" + x.ToString());
mainEntity.TrySetPropertyValue("EmailAddress", "[email protected]" + x.ToString());
mainEntity.TrySetPropertyValue("FirstName", "FirstName" + x.ToString());
mainEntity.TrySetPropertyValue("LastName", "LastName" + x.ToString());
mainEntity.TrySetPropertyValue("Custom", "Custom" + x.ToString());
mainEntity.TrySetPropertyValue("[BasicProperty]Id", "[BasicProperty]Id" + x.ToString());
IEdmEntityTypeReference categoryType = entityType.FindNavigationProperty("UserLogin").Type.AsEntity();
var mainEntity2 = new EdmEntityObject(categoryType);
mainEntity2.TrySetPropertyValue("Id", "AllKey" + x.ToString());
mainEntity2.TrySetPropertyValue("UserName", "AccountId" + x.ToString());
mainEntity2.TrySetPropertyValue("EmailAddress", "[email protected]" + x.ToString());
mainEntity2.TrySetPropertyValue("FirstName", "FirstName" + x.ToString());
mainEntity2.TrySetPropertyValue("LastName", "LastName" + x.ToString());
mainEntity.TrySetPropertyValue("UserLogin", mainEntity2);
collectionProduct.Add(mainEntity);
}
결과는 다음과 같습니다.
{
"@odata.context": "http://localhost/WebApi/enwisen/User_Entity/$metadata#User_Entity",
"value": [
{
"UserName": "AccountId1",
"EmailAddress": "[email protected]",
"Id": "AllKey1",
"FirstName": "FirstName1",
"LastName": "LastName1",
"Custom": "Custom1"
},
{
"UserName": "AccountId2",
"EmailAddress": "[email protected]",
"Id": "AllKey2",
"FirstName": "FirstName2",
"LastName": "LastName2",
"Custom": "Custom2"
},
{
"UserName": "AccountId3",
"EmailAddress": "[email protected]",
"Id": "AllKey3",
"FirstName": "FirstName3",
"LastName": "LastName3",
"Custom": "Custom3"
},
{
"UserName": "AccountId4",
"EmailAddress": "[email protected]",
"Id": "AllKey4",
"FirstName": "FirstName4",
"LastName": "LastName4",
"Custom": "Custom4"
},
{
"UserName": "AccountId5",
"EmailAddress": "[email protected]",
"Id": "AllKey5",
"FirstName": "FirstName5",
"LastName": "LastName5",
"Custom": "Custom5"
}
]
}
는 여기에 내가 탐색 속성이 메타 데이터
<EntityType Name="User">
<Key>
<PropertyRef Name="Id"/>
</Key>
<Property Name="UserName" Type="Edm.String"/>
<Property Name="EmailAddress" Type="Edm.String"/>
<Property Name="Id" Type="Edm.String"/>
<Property Name="FirstName" Type="Edm.String"/>
<Property Name="LastName" Type="Edm.String"/>
<Property Name="Custom" Type="Edm.String"/>
<NavigationProperty Name="GroupLookup" Type="Collection(Enwisen.GroupLookup)"/>
<NavigationProperty Name="UserLogin" Type="Enwisen.UserLogin" Nullable="false/>
</EntityType>
공지 사항입니다하지만 결과에 반영 나던.
http://localhost/WebApi/enwisen/User_Entity/User_Entity?$expand=UserLogin
는 따라서 탐색 속성이 응답 페이로드에 표시됩니다 : 당신은 다음과 같이 쿼리를 작성해야
http://localhost/WebApi/enwisen/User_Entity/User_Entity
으로 당신이 당신의 GET 요청을 작성하는 그런
위로 wcf 데이터 서비스 odata를 사용할 때 확장 속성을 사용하지 않아도 탐색 속성이 표시됩니다. 그것에 연결된 링크가 있습니다. 나는 웹 api가 다른 행동을하는지 모른다. – destroyerlp
WCF Data Services에서 반환하는 기본 페이로드 유형은 Atom입니다. 탐색 링크의 연관 링크와 탐색 링크는 기본적으로 Atom 페이로드에 포함됩니다. 귀하의 웹 API 서비스가 반환하는 페이로드가 JSON 페이로드라고 생각합니다. V3 OData 서비스의 경우 탐색 링크를 JSON 페이로드에 포함하려면 페이로드를 http : // localhost/WebApi/enwisen/User_Entity/User_Entity? $ format = application/json; odata = verbose로 요청할 수 있습니다. V4 서비스의 경우 http : // localhost/WebApi/enwisen/User_Entity/User_Entity? $ format = application/json; odata.metadata = full을 요청해야합니다. –
좋아요! 이제 탐색 속성을 볼 수 있습니다. Thanks @ Yi Ding – destroyerlp