当前位置: 首页>>代码示例>>C#>>正文


C# ODataMessageWriter.CreateODataEntryWriterAsync方法代码示例

本文整理汇总了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();
            }
        }
开发者ID:tschnittgen,项目名称:Simple.OData.Client,代码行数:52,代码来源:RequestWriter.cs

示例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();
            }
        }
开发者ID:ErikWitkowski,项目名称:Simple.OData.Client,代码行数:40,代码来源:RequestWriter.cs


注:本文中的ODataMessageWriter.CreateODataEntryWriterAsync方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。