【问题标题】:Microsoft.OData.Client not loading related entities when calling a function with expandMicrosoft.OData.Client 在调用具有扩展的函数时未加载相关实体
【发布时间】:2015-10-15 19:34:13
【问题描述】:

我创建了一个 Web API OData v4 服务,我尝试使用 Microsoft.OData.Client 库 OData Client T4 模板(版本 2.3.0)来使用它。我唯一不能开始工作的是使用链接到绑定函数的 Expand 方法。它返回主要实体,但它没有序列化我通过扩展方法要求它的相关实体。我已经使用 fiddler 检查了流量,并且相关实体正在从我的服务中返回。是的,我已将所有 NuGet 库更新到最新版本。我在网上找不到任何关于此的信息。任何帮助表示赞赏。

我在下面列出了一些代码以供参考:

Client.cs:

// Doesn't work returning a collection
var collectionResult = this.LibraryFolders.ByKey(newLibrary.Id).RefreshLibrary().Expand("MediaFiles").First();

// And doesn't work returning a single result
var singleResult     = this.LibraryFolders.ByKey(newLibrary.Id).RefreshLibrary().Expand("MediaFiles").GetValue();

我认为问题不在我的服务代码中,因为它按预期工作,但显示它以供参考...

LibraryFoldersController.cs:

[HttpGet]
[EnableQuery]
public SingleResult<LibraryFolder> RefreshLibrary([FromODataUri] long key)
{
    this.businessController.RefreshLibrary(key);

    return this.GetLibraryFolder(key);
}

WebApiConfig.cs:

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

    config.MapODataServiceRoute("ODataRoute", "api", GetModel());
}

public static Microsoft.OData.Edm.IEdmModel GetModel()
{
    var builder = new ODataConventionModelBuilder
    {
        Namespace = "OData"
    };

    builder.EntitySet<LibraryFolder>("LibraryFolders");
    builder.EntitySet<MediaFile>("MediaFiles");

    builder.EntitySet<LibraryFolder>("LibraryFolders")
            .EntityType
            .Function("RefreshLibrary")
            .ReturnsFromEntitySet<LibraryFolder>("LibraryFolders");

    return builder.GetEdmModel();
}

【问题讨论】:

    标签: c# entity-framework web-services asp.net-web-api odata


    【解决方案1】:

    这似乎是一个 OData 客户端错误。我创建了一个要跟踪的问题:https://github.com/OData/odata.net/issues/285 谢谢你的信息。

    【讨论】:

    • @Jason 你可以添加'container.MergeOption = MergeOption.OverwriteChanges;'配置?有关详细信息,请参阅更新的问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 2016-10-10
    相关资源
    最近更新 更多