本文整理汇总了C#中ODataMessageWriter.WriteEntityReferenceLinks方法的典型用法代码示例。如果您正苦于以下问题:C# ODataMessageWriter.WriteEntityReferenceLinks方法的具体用法?C# ODataMessageWriter.WriteEntityReferenceLinks怎么用?C# ODataMessageWriter.WriteEntityReferenceLinks使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ODataMessageWriter
的用法示例。
在下文中一共展示了ODataMessageWriter.WriteEntityReferenceLinks方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteObject
/// <inheridoc />
public override void WriteObject(object graph, Type type, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
if (graph != null)
{
ODataEntityReferenceLinks entityReferenceLinks = graph as ODataEntityReferenceLinks;
if (entityReferenceLinks == null)
{
IEnumerable<Uri> uris = graph as IEnumerable<Uri>;
if (uris == null)
{
throw new SerializationException(Error.Format(SRResources.CannotWriteType, GetType().Name, graph.GetType().FullName));
}
entityReferenceLinks = new ODataEntityReferenceLinks
{
Links = uris.Select(uri => new ODataEntityReferenceLink { Url = uri })
};
}
messageWriter.WriteEntityReferenceLinks(entityReferenceLinks);
}
}
示例2: WriteObject
/// <inheridoc />
public override void WriteObject(object graph, Type type, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
if (writeContext.Path == null)
{
throw new SerializationException(SRResources.ODataPathMissing);
}
IEdmEntitySet entitySet = writeContext.Path.GetEntitySet();
if (entitySet == null)
{
throw new SerializationException(SRResources.EntitySetMissingDuringSerialization);
}
IEdmNavigationProperty navigationProperty = writeContext.Path.GetNavigationProperty();
if (navigationProperty == null)
{
throw new SerializationException(SRResources.NavigationPropertyMissingDuringSerialization);
}
if (graph != null)
{
ODataEntityReferenceLinks entityReferenceLinks = graph as ODataEntityReferenceLinks;
if (entityReferenceLinks == null)
{
IEnumerable<Uri> uris = graph as IEnumerable<Uri>;
if (uris == null)
{
throw new SerializationException(Error.Format(SRResources.CannotWriteType, GetType().Name, graph.GetType().FullName));
}
entityReferenceLinks = new ODataEntityReferenceLinks
{
Links = uris.Select(uri => new ODataEntityReferenceLink { Url = uri })
};
if (writeContext.Request != null)
{
entityReferenceLinks.Count = writeContext.Request.ODataProperties().TotalCount;
}
}
messageWriter.WriteEntityReferenceLinks(entityReferenceLinks, entitySet, navigationProperty);
}
}
示例3: WriteObjectAsync
/// <inheridoc />
public override Task WriteObjectAsync(object graph, Type type, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
if (graph != null)
{
ODataEntityReferenceLinks entityReferenceLinks = graph as ODataEntityReferenceLinks;
if (entityReferenceLinks == null)
{
IEnumerable<Uri> uris = graph as IEnumerable<Uri>;
if (uris == null)
{
throw new SerializationException(Error.Format(SRResources.CannotWriteType, GetType().Name, graph.GetType().FullName));
}
entityReferenceLinks = new ODataEntityReferenceLinks
{
Links = uris.Select(uri => new ODataEntityReferenceLink { Url = uri })
};
if (writeContext.Request != null)
{
entityReferenceLinks.Count = writeContext.Request.ODataProperties().TotalCount;
}
}
messageWriter.WriteEntityReferenceLinks(entityReferenceLinks);
}
return Task.FromResult(true);
}
示例4: WriteObject
public override void WriteObject(object graph, Type type, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw new ArgumentNullException("messageWriter");
}
if (writeContext == null)
{
throw new ArgumentNullException("writeContext");
}
if (graph != null)
{
Uri[] uris = graph as Uri[];
if (uris == null)
{
throw new SerializationException("Cannot write the type");
}
messageWriter.WriteEntityReferenceLinks(new ODataEntityReferenceLinks
{
Links = uris.Select(uri => new ODataEntityReferenceLink { Url = uri })
});
}
}
示例5: WriteTopLevelEntityReferenceLinks
private static void WriteTopLevelEntityReferenceLinks()
{
Console.WriteLine("WriteTopLevelEntityReferenceLinks");
var msg = ODataSamplesUtil.CreateMessage();
msg.PreferenceAppliedHeader().AnnotationFilter = "*";
var settings = new ODataMessageWriterSettings(BaseSettings)
{
ODataUri = new ODataUri()
{
ServiceRoot = new Uri("http://demo/odata.svc/")
},
};
var link1 = new ODataEntityReferenceLink() { Url = new Uri("http://demo/odata.svc/People(3)") };
var link2 = new ODataEntityReferenceLink() { Url = new Uri("http://demo/odata.svc/People(4)") };
var links = new ODataEntityReferenceLinks()
{
Links = new[] { link1, link2 }
};
using (var omw = new ODataMessageWriter((IODataResponseMessage)msg, settings, ExtModel.Model))
{
omw.WriteEntityReferenceLinks(links);
}
Console.WriteLine(ODataSamplesUtil.MessageToString(msg));
}
示例6: WriteTopLevelEntityReferenceLinks
public void WriteTopLevelEntityReferenceLinks()
{
ODataEntityReferenceLink link1 = new ODataEntityReferenceLink
{
Url = new Uri("http://host/Customers(1)")
};
link1.InstanceAnnotations.Add(new ODataInstanceAnnotation("Is.New", new ODataPrimitiveValue(true)));
ODataEntityReferenceLink link2 = new ODataEntityReferenceLink
{
Url = new Uri("http://host/Customers(2)")
};
link2.InstanceAnnotations.Add(new ODataInstanceAnnotation("TestNamespace.unknown", new ODataPrimitiveValue(123)));
link2.InstanceAnnotations.Add(new ODataInstanceAnnotation("custom.annotation", new ODataPrimitiveValue(456)));
ODataEntityReferenceLinks referencelinks = new ODataEntityReferenceLinks()
{
Links = new[] { link1, link2 }
};
var writerSettings = new ODataMessageWriterSettings { DisableMessageStreamDisposal = true };
writerSettings.SetContentType(ODataFormat.Json);
writerSettings.SetServiceDocumentUri(new Uri("http://odata.org/test"));
MemoryStream stream = new MemoryStream();
IODataResponseMessage requestMessageToWrite = new InMemoryMessage { StatusCode = 200, Stream = stream };
requestMessageToWrite.PreferenceAppliedHeader().AnnotationFilter = "*";
using (var messageWriter = new ODataMessageWriter(requestMessageToWrite, writerSettings, EdmModel))
{
messageWriter.WriteEntityReferenceLinks(referencelinks);
}
stream.Position = 0;
string payload = (new StreamReader(stream)).ReadToEnd();
string expectedPayload = "{\"@odata.context\":\"http://odata.org/test/$metadata#Collection($ref)\",\"value\":[{\"@odata.id\":\"http://host/Customers(1)\",\"@Is.New\":true},{\"@odata.id\":\"http://host/Customers(2)\",\"@TestNamespace.unknown\":123,\"@custom.annotation\":456}]}";
Assert.AreEqual(expectedPayload, payload);
}
示例7: WriteAndVerifyLinks
private string WriteAndVerifyLinks(StreamResponseMessage responseMessage, ODataMessageWriter messageWriter, string mimeType)
{
var links = new ODataEntityReferenceLinks()
{
Links = new[]
{
new ODataEntityReferenceLink() {Url = new Uri(this.ServiceUri + "Order(-10)")},
new ODataEntityReferenceLink() {Url = new Uri(this.ServiceUri + "Order(-7)")},
},
NextPageLink = new Uri(this.ServiceUri + "Customer(-10)/Orders/$ref?$skiptoken=-7")
};
messageWriter.WriteEntityReferenceLinks(links);
Stream stream = responseMessage.GetStream();
if (!mimeType.Contains(MimeTypes.ODataParameterNoMetadata))
{
stream.Seek(0, SeekOrigin.Begin);
var settings = new ODataMessageReaderSettings() { BaseUri = this.ServiceUri };
ODataMessageReader messageReader = new ODataMessageReader(responseMessage, settings, WritePayloadHelper.Model);
ODataEntityReferenceLinks linksRead = messageReader.ReadEntityReferenceLinks();
Assert.AreEqual(2, linksRead.Links.Count(), "linksRead.Links.Count");
Assert.IsNotNull(linksRead.NextPageLink, "linksRead.NextPageLink");
}
return WritePayloadHelper.ReadStreamContent(stream);
}