本文整理汇总了C#中ODataMessageWriter.CreateODataEntryWriter方法的典型用法代码示例。如果您正苦于以下问题:C# ODataMessageWriter.CreateODataEntryWriter方法的具体用法?C# ODataMessageWriter.CreateODataEntryWriter怎么用?C# ODataMessageWriter.CreateODataEntryWriter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ODataMessageWriter
的用法示例。
在下文中一共展示了ODataMessageWriter.CreateODataEntryWriter方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteObject
/// <inheritdoc />
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");
}
IEdmNavigationSource navigationSource = writeContext.NavigationSource;
if (navigationSource == null)
{
throw new SerializationException(SRResources.NavigationSourceMissingDuringSerialization);
}
var path = writeContext.Path;
if (path == null)
{
throw new SerializationException(SRResources.ODataPathMissing);
}
ODataWriter writer = messageWriter.CreateODataEntryWriter(navigationSource, path.EdmType as IEdmEntityType);
WriteObjectInline(graph, navigationSource.EntityType().ToEdmTypeReference(isNullable: false), writer, writeContext);
}
示例2: EntryMetadataUrlRoundTrip
public void EntryMetadataUrlRoundTrip()
{
var stream = new MemoryStream();
var writerRequestMemoryMessage = new InMemoryMessage();
writerRequestMemoryMessage.Stream = stream;
writerRequestMemoryMessage.SetHeader("Content-Type", "application/json");
var writerSettings = new ODataMessageWriterSettings() {Version = ODataVersion.V4, DisableMessageStreamDisposal = true};
writerSettings.ODataUri = new ODataUri() {ServiceRoot = new Uri("http://christro.svc/")};
var messageWriter = new ODataMessageWriter((IODataResponseMessage)writerRequestMemoryMessage, writerSettings, this.model);
var organizationSetWriter = messageWriter.CreateODataEntryWriter(this.organizationsSet);
var odataEntry = new ODataEntry(){ TypeName = ModelNamespace + ".Corporation" };
odataEntry.Property("Id", 1);
odataEntry.Property("Name", "");
odataEntry.Property("TickerSymbol", "MSFT");
organizationSetWriter.WriteStart(odataEntry);
organizationSetWriter.WriteEnd();
var readerPayloadInput = Encoding.UTF8.GetString(stream.GetBuffer());
Console.WriteLine(readerPayloadInput);
var readerResponseMemoryMessage = new InMemoryMessage();
readerResponseMemoryMessage.Stream = new MemoryStream(stream.GetBuffer());
readerResponseMemoryMessage.SetHeader("Content-Type", "application/json");
var messageReader = new ODataMessageReader((IODataResponseMessage)readerResponseMemoryMessage, new ODataMessageReaderSettings() {MaxProtocolVersion = ODataVersion.V4, DisableMessageStreamDisposal = true}, this.model);
var organizationReader = messageReader.CreateODataEntryReader(this.organizationsSet, this.organizationsSet.EntityType());
organizationReader.Read().Should().Be(true);
organizationReader.Item.As<ODataEntry>();
}
示例3: WriteObject
public override void WriteObject(object graph, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
if (graph == null)
{
throw new SerializationException(Error.Format(Properties.SRResources.CannotSerializerNull,
ODataFormatterConstants.Entry));
}
IEdmEntitySet entitySet = writeContext.EntitySet;
if (entitySet == null)
{
throw new SerializationException(SRResources.EntitySetMissingDuringSerialization);
}
// No null check; entity type is not required for successful serialization.
IEdmEntityType entityType = _edmEntityTypeReference.Definition as IEdmEntityType;
ODataWriter writer = messageWriter.CreateODataEntryWriter(entitySet, entityType);
WriteObjectInline(graph, writer, writeContext);
writer.Flush();
}
示例4: WriteCompletedAsyncResponse
public void WriteCompletedAsyncResponse()
{
var asyncWriter = this.TestInit();
var innerMessage = asyncWriter.CreateResponseMessage();
innerMessage.StatusCode = 200;
innerMessage.SetHeader("Content-Type", "application/json");
var settings = new ODataMessageWriterSettings();
settings.SetServiceDocumentUri(new Uri(ServiceDocumentUri));
settings.DisableMessageStreamDisposal = true;
using (var innerMessageWriter = new ODataMessageWriter(innerMessage, settings, this.userModel))
{
var entryWriter = innerMessageWriter.CreateODataEntryWriter(singleton, testType);
var entry = new ODataEntry() {TypeName = "NS.Test", Properties = new[] {new ODataProperty() {Name = "Id", Value = 1}}};
entryWriter.WriteStart(entry);
entryWriter.WriteEnd();
}
asyncWriter.Flush();
var payload = this.TestFinish();
Assert.Equal("HTTP/1.1 200 OK\r\nContent-Type: application/json\r\nOData-Version: 4.0\r\n\r\n{\"@odata.context\":\"http://host/service/$metadata#MySingleton\",\"Id\":1}", payload);
}
示例5: GetSampleEntityPayload
public string GetSampleEntityPayload(object entity, IEnumerable<string> projectedProperties)
{
var message = new SimpleResponseMessage(this.StatusCode, this.ContentType);
using (var writer = new ODataMessageWriter(message, Settings))
{
WriteEntry(writer.CreateODataEntryWriter(), entity, projectedProperties);
}
return message.GetMessageString();
}
示例6: WriterShouldNotIncludeTypeNameForCollectionOfDerivedType
public void WriterShouldNotIncludeTypeNameForCollectionOfDerivedType()
{
// JSON Light: writer doesn't include type name for collection of derived type
// If I have a collection property declared in metadata as Collection(Edm.Geography),
// and at serialization type, it's clearly a Collection(Edm.GeographyPoint),
// we won't write the type name for that property by default (i.e., minimal metadata mode).
var model = new EdmModel();
var entityType = new EdmEntityType("Var1", "Type");
entityType.AddKeys(entityType.AddStructuralProperty("Id", EdmPrimitiveTypeKind.Int32));
entityType.AddProperty(new EdmStructuralProperty(entityType, "Geographies", new EdmCollectionTypeReference(new EdmCollectionType(EdmCoreModel.Instance.GetSpatial(EdmPrimitiveTypeKind.Geography, false)))));
model.AddElement(entityType);
var writerSettings = new ODataMessageWriterSettings();
writerSettings.SetContentType(ODataFormat.Json);
writerSettings.DisableMessageStreamDisposal = true;
var message = new InMemoryMessage { Stream = new MemoryStream() };
using (ODataMessageWriter odataMessageWriter = new ODataMessageWriter((IODataRequestMessage)message, writerSettings, model))
{
ODataWriter odataWriter = odataMessageWriter.CreateODataEntryWriter();
odataWriter.WriteStart(
new ODataEntry
{
TypeName = "Var1.Type",
Properties = new[]
{
new ODataProperty()
{
Name = "Id",
Value = 1
},
new ODataProperty()
{
Name = "Geographies",
Value = new ODataCollectionValue
{
Items = new[]
{
GeographyPoint.Create(0,0),
GeographyPoint.Create(1,1),
GeographyPoint.Create(2,2)
}
}
},
}
});
odataWriter.WriteEnd();
odataWriter.Flush();
}
message.Stream.Position = 0;
var output = new StreamReader(message.Stream).ReadToEnd();
Assert.IsFalse(output.Contains("Collection(Edm.GeographyPoint)"), @"output.Contains(""Collection(Edm.GeographyPoint)"" == false");
}
示例7: WriteEntryContentAsync
protected override async Task<Stream> WriteEntryContentAsync(string method, string collection, string commandText, IDictionary<string, object> entryData, bool resultRequired)
{
#if SILVERLIGHT
IODataRequestMessage
#else
IODataRequestMessageAsync
#endif
message = IsBatch
? await CreateBatchOperationMessageAsync(method, collection, entryData, commandText, resultRequired)
: new ODataRequestMessage();
if (method == RestVerbs.Get || method == RestVerbs.Delete)
return null;
var entityType = _model.FindDeclaredType(
_session.Metadata.GetQualifiedTypeName(collection)) as IEdmEntityType;
var model = method == RestVerbs.Patch ? new EdmDeltaModel(_model, entityType, entryData.Keys) : _model;
using (var messageWriter = new ODataMessageWriter(message, GetWriterSettings(), model))
{
var contentId = _deferredBatchWriter != null ? _deferredBatchWriter.Value.GetContentId(entryData, null) : null;
//var entityCollection = _session.Metadata.GetEntityCollection(collection);
var entityCollection = _session.Metadata.NavigateToCollection(collection);
var entryDetails = _session.Metadata.ParseEntryDetails(entityCollection.Name, entryData, contentId);
var entryWriter = messageWriter.CreateODataEntryWriter();
var entry = CreateODataEntry(entityType.FullName(), entryDetails.Properties);
entryWriter.WriteStart(entry);
if (entryDetails.Links != null)
{
foreach (var link in entryDetails.Links)
{
if (link.Value.Any(x => x.LinkData != null))
{
WriteLink(entryWriter, entry, link.Key, link.Value);
}
}
}
entryWriter.WriteEnd();
if (IsBatch)
return null;
#if SILVERLIGHT
return message.GetStream();
#else
return await message.GetStreamAsync();
#endif
}
}
示例8: ClientWriteAsyncBatchRequest
private byte[] ClientWriteAsyncBatchRequest()
{
var stream = new MemoryStream();
IODataRequestMessage requestMessage = new InMemoryMessage { Stream = stream };
requestMessage.SetHeader("Content-Type", batchContentType);
using (var messageWriter = new ODataMessageWriter(requestMessage))
{
var batchWriter = messageWriter.CreateODataBatchWriter();
batchWriter.WriteStartBatch();
// Write a query operation.
var queryOperationMessage = batchWriter.CreateOperationRequestMessage("GET", new Uri(serviceDocumentUri + "/Customers('ALFKI')"), /*contentId*/ null);
// Write a changeset with multi update operation.
batchWriter.WriteStartChangeset();
// Create a creation operation in the changeset.
var updateOperationMessage = batchWriter.CreateOperationRequestMessage("POST", new Uri(serviceDocumentUri + "/Customers"), "1");
// Use a new message writer to write the body of this operation.
using (var operationMessageWriter = new ODataMessageWriter(updateOperationMessage))
{
var entryWriter = operationMessageWriter.CreateODataEntryWriter();
var entry = new ODataEntry() { TypeName = "MyNS.Customer", Properties = new[] { new ODataProperty() { Name = "Id", Value = "AFKIL" }, new ODataProperty() { Name = "Name", Value = "Bob" } } };
entryWriter.WriteStart(entry);
entryWriter.WriteEnd();
}
updateOperationMessage = batchWriter.CreateOperationRequestMessage("PATCH", new Uri(serviceDocumentUri + "/Customers('ALFKI')"), "2");
using (var operationMessageWriter = new ODataMessageWriter(updateOperationMessage))
{
var entryWriter = operationMessageWriter.CreateODataEntryWriter();
var entry = new ODataEntry() { TypeName = "MyNS.Customer", Properties = new[] { new ODataProperty() { Name = "Name", Value = "Jack" } } };
entryWriter.WriteStart(entry);
entryWriter.WriteEnd();
}
batchWriter.WriteEndChangeset();
// Write a query operation.
batchWriter.CreateOperationRequestMessage("GET", new Uri(serviceDocumentUri + "/Products"), /*contentId*/ null);
batchWriter.WriteEndBatch();
stream.Position = 0;
return stream.ToArray();
}
}
示例9: TestCreateODataEntryWriter_InJsonLight_WithoutEntitySetOrType_Throws
public void TestCreateODataEntryWriter_InJsonLight_WithoutEntitySetOrType_Throws()
{
// Arrange
IODataResponseMessage response = CreateResponse();
ODataMessageWriterSettings settings = CreateJsonLightSettings();
IEdmModel model = CreateModel();
using (ODataMessageWriter writer = new ODataMessageWriter(response, settings, model))
{
// Act & Assert
Assert.Throws<ODataException>(() => writer.CreateODataEntryWriter());
}
}
示例10: TestCreateODataEntryWriter_InJsonLight_WithEntitySetButWithoutType_DoesNotThrow
public void TestCreateODataEntryWriter_InJsonLight_WithEntitySetButWithoutType_DoesNotThrow()
{
// Arrange
IODataResponseMessage response = CreateResponse();
ODataMessageWriterSettings settings = CreateJsonLightSettings();
IEdmModel model = CreateModel();
IEdmEntitySet entitySet = model.EntityContainers().Single().EntitySets().First();
using (ODataMessageWriter writer = new ODataMessageWriter(response, settings, model))
{
// Act & Assert
Assert.DoesNotThrow(() => writer.CreateODataEntryWriter(entitySet));
}
}
示例11: TestCreateODataEntryWriter_InJsonLight_WithEntitySetButWithoutType_DoesNotThrow
public void TestCreateODataEntryWriter_InJsonLight_WithEntitySetButWithoutType_DoesNotThrow()
{
// Arrange
IODataResponseMessage response = CreateResponse();
ODataMessageWriterSettings settings = CreateJsonLightSettings();
IEdmModel model = CreateModel();
IEdmEntitySet entitySet = model.EntityContainers().Single().EntitySets().First();
using (ODataMessageWriter writer = new ODataMessageWriter(response, settings, model))
{
// Act
writer.CreateODataEntryWriter(entitySet);
// No assert (just ensuring this kind of call does not throw).
}
}
示例12: WriteObject
public override void WriteObject(object graph, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
ODataWriter writer = messageWriter.CreateODataEntryWriter();
WriteObjectInline(graph, writer, writeContext);
writer.Flush();
}
示例13: BuildRequestForTableOperation
internal static Tuple<HttpWebRequest, Stream> BuildRequestForTableOperation(Uri uri, UriQueryBuilder builder, IBufferManager bufferManager, int? timeout, TableOperation operation, OperationContext ctx)
{
HttpWebRequest msg = BuildRequestCore(uri, builder, operation.HttpMethod, timeout, ctx);
if (operation.OperationType == TableOperationType.InsertOrMerge || operation.OperationType == TableOperationType.Merge)
{
// post tunnelling
msg.Headers.Add("X-HTTP-Method", "MERGE");
}
// etag
if (operation.OperationType == TableOperationType.Delete ||
operation.OperationType == TableOperationType.Replace ||
operation.OperationType == TableOperationType.Merge)
{
if (operation.Entity.ETag != null)
{
msg.Headers.Add("If-Match", operation.Entity.ETag);
}
}
if (operation.OperationType == TableOperationType.Insert ||
operation.OperationType == TableOperationType.Merge ||
operation.OperationType == TableOperationType.InsertOrMerge ||
operation.OperationType == TableOperationType.InsertOrReplace ||
operation.OperationType == TableOperationType.Replace)
{
// create the writer, indent for readability of the examples.
ODataMessageWriterSettings writerSettings = new ODataMessageWriterSettings()
{
CheckCharacters = false, // sets this flag on the XmlWriter for ATOM
Version = ODataVersion.V2 // set the Odata version to use when writing the entry
};
HttpWebRequestAdapterMessage adapterMsg = new HttpWebRequestAdapterMessage(msg, bufferManager);
ODataMessageWriter odataWriter = new ODataMessageWriter(adapterMsg, writerSettings);
ODataWriter writer = odataWriter.CreateODataEntryWriter();
WriteOdataEntity(operation.Entity, operation.OperationType, ctx, writer);
return new Tuple<HttpWebRequest, Stream>(adapterMsg.GetPopulatedMessage(), adapterMsg.GetStream());
}
return new Tuple<HttpWebRequest, Stream>(msg, null);
}
示例14: WriteObject
/// <inheritdoc />
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");
}
IEdmEntitySet entitySet = writeContext.EntitySet;
if (entitySet == null)
{
throw new SerializationException(SRResources.EntitySetMissingDuringSerialization);
}
ODataWriter writer = messageWriter.CreateODataEntryWriter(entitySet, entitySet.ElementType);
WriteObjectInline(graph, entitySet.ElementType.ToEdmTypeReference(isNullable: false), writer, writeContext);
}
示例15: WriteObject
/// <inheritdoc />
public override void WriteObject(object graph, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)
{
if (messageWriter == null)
{
throw Error.ArgumentNull("messageWriter");
}
if (writeContext == null)
{
throw Error.ArgumentNull("writeContext");
}
IEdmEntitySet entitySet = writeContext.EntitySet;
if (entitySet == null)
{
throw new SerializationException(SRResources.EntitySetMissingDuringSerialization);
}
IEdmEntityType entityType = EntityType.EntityDefinition();
ODataWriter writer = messageWriter.CreateODataEntryWriter(entitySet, entityType);
WriteObjectInline(graph, writer, writeContext);
}