WCF 데이터 서비스 OData 서비스 (둘 다 v5.3.0)를 사용하는 클라이언트 응용 프로그램이 있습니다. 나는 클라이언트 애플리케이션이 Atom Pub XML 대신에 JSON을 사용하여 서비스와 통신하도록한다.서비스 메타 데이터를 참조하지 않고 WCF Data Services Client를 사용하여 JSON 표시 형식을 사용할 수 있습니까?
IEdmModel 인스턴스를 제공하지 않고이 작업을 수행 할 수 있습니까? 그것은 아톰 형식을 사용할 때 수행하는 것이 가능하다 :
var ctx = new DataServiceContext(_oDataSvcUri, DataServiceProtocolVersion.V3)
{
IgnoreMissingProperties = true
};
// this isn't explicitly needed, as it uses Atom by default
ctx.Format.UseAtom();
return ctx;
이 JSON을 사용하여 작동하려면이 필요 무슨의 예입니다 반면 :
var ctx = new DataServiceContext(_oDataSvcUri, DataServiceProtocolVersion.V3)
{
IgnoreMissingProperties = true
};
const string svcMetadata = "*insert contents of http://example.com/YourData.svc/$metadata here*";
var xmlReader = XmlReader.Create(new StringReader(svcMetadata));
IEdmModel edmModel = EdmxReader.Parse(xmlReader);
ctx.Format.UseJson(edmModel);
ctx.ResolveName = type => type.FullName;
ctx.ResolveType = typeName => Type.GetType(typeName + ", " + "MyDomainModelAssemblyName");
return ctx;
내가 사용할 수 있도록하고 싶습니다이 JSON 형식으로 IEdmModel을 지정하지 않고 Atom을 사용할 수 있습니다. 이것이 가능한가?
답장을 보내 주셔서 감사합니다. Jen. 서버 측 모델을 포함하는 어셈블리는 클라이언트 측에서 사용할 수 있습니다 (둘 다 소유하고 있음). 서비스 참조/메타 데이터 업데이트 XML을 업데이트하지 않고도 JSON을 사용하여 서비스를 사용할 수 있습니다. 파일 또는 문자열을 내 클라이언트 응용 프로그램에 저장합니다. DataServiceContext에서 CreateQuery 메서드를 호출 할 때 deserialise하기 위해 형식을 전달하기 때문에 이것이 가능해야합니다 : 'dataServiceContext.CreateQuery
VariableContent
불행하게도 형식만으로는 충분하지 않습니다. . 클라이언트는 JSON Light을 읽을 수 있도록 전체 모델을 필요로합니다. 서비스 참조를 업데이트 할 수 없거나 클라이언트에서 문자열 리소스를 변경할 수없는 경우 EdmLib에서 생성 가능한 API (Microsoft.Data.Edm.Library 네임 스페이스의 Microsoft.Data.Edm.dll을 통해 사용할 수 있음)를 사용하여 IEdmModel의 인스턴스. 예를 들면 다음과 같습니다. EdmModel model = new EdmModel(); model.AddElement (새 EntityType (...)). API 사용법은 쉽게 발견 할 수 있어야하지만 질문이있는 경우 (이 경로를 선택하기로 결정한 경우) 물어보십시오. –
"새 EntityType()"이 아닌 "새 EdmEntityType()"이어야하지만 주석 편집을위한 5 분 제한 시간이 넘었습니다. :) –