Microsoft.OData.Client在调用扩展函数时没有加载相关实体

本文关键字:加载 实体 函数 Client OData 调用 扩展 Microsoft | 更新日期: 2023-09-27 18:04:48

我已经创建了一个Web API OData v4服务,我正在尝试使用Microsoft.OData.Client库OData Client T4 Template (ver. net . net)来使用它。tripwire)。我唯一不能工作的是使用扩展方法链接到绑定函数。它返回主实体,但它没有序列化我通过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();
}

Microsoft.OData.Client在调用扩展函数时没有加载相关实体

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