本文整理汇总了C#中ODataMessageWriter.CreateODataEntryWriterAsync方法的典型用法代码示例。如果您正苦于以下问题:C# ODataMessageWriter.CreateODataEntryWriterAsync方法的具体用法?C# ODataMessageWriter.CreateODataEntryWriterAsync怎么用?C# ODataMessageWriter.CreateODataEntryWriterAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ODataMessageWriter
的用法示例。
在下文中一共展示了ODataMessageWriter.CreateODataEntryWriterAsync方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WriteEntryContentAsync
protected override async Task<Stream> WriteEntryContentAsync(string method, string collection, string commandText, IDictionary<string, object> entryData)
{
IODataRequestMessageAsync message = IsBatch
? await CreateOperationRequestMessageAsync(method, collection, entryData, commandText)
: new ODataRequestMessage();
if (method == RestVerbs.Get || method == RestVerbs.Delete)
return null;
var entityType = _model.FindDeclaredType(
_session.Metadata.GetEntityCollectionQualifiedTypeName(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 entryDetails = _session.Metadata.ParseEntryDetails(entityCollection.Name, entryData, contentId);
var entryWriter = await messageWriter.CreateODataEntryWriterAsync();
var entry = new Microsoft.OData.Core.ODataEntry();
entry.TypeName = entityType.FullName();
var typeProperties = (_model.FindDeclaredType(entry.TypeName) as IEdmEntityType).Properties();
Func<string, string> findMatchingPropertyName = name =>
{
var property = typeProperties.BestMatch(y => y.Name, name, _session.Pluralizer);
return property != null ? property.Name : name;
};
entry.Properties = entryDetails.Properties.Select(x => new ODataProperty()
{
Name = findMatchingPropertyName(x.Key),
Value = GetPropertyValue(typeProperties, x.Key, x.Value)
}).ToList();
await entryWriter.WriteStartAsync(entry);
if (entryDetails.Links != null)
{
foreach (var link in entryDetails.Links)
{
if (link.Value.Any(x => x.LinkData != null))
{
await WriteLinkAsync(entryWriter, entry, link.Key, link.Value);
}
}
}
await entryWriter.WriteEndAsync();
return IsBatch ? null : await message.GetStreamAsync();
}
}
示例2: WriteEntryContentAsync
protected override async Task<Stream> WriteEntryContentAsync(string method, string collection, string commandText, IDictionary<string, object> entryData, bool resultRequired)
{
IODataRequestMessageAsync 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 = await messageWriter.CreateODataEntryWriterAsync();
var entry = CreateODataEntry(entityType.FullName(), entryDetails.Properties);
await entryWriter.WriteStartAsync(entry);
if (entryDetails.Links != null)
{
foreach (var link in entryDetails.Links)
{
if (link.Value.Any(x => x.LinkData != null))
{
await WriteLinkAsync(entryWriter, entry, link.Key, link.Value);
}
}
}
await entryWriter.WriteEndAsync();
return IsBatch ? null : await message.GetStreamAsync();
}
}