C# 扩展OData函数调用结果会引发异常,因为已将生成器升级到2.4

C# 扩展OData函数调用结果会引发异常,因为已将生成器升级到2.4,c#,odata,C#,Odata,我已将OData客户端T4模板从2更新为2.3,但该模板不再工作 _container.Users.GetLoggedInUser().Expand(x => x.Debtor); 这是新生成的代码 [global::Microsoft.OData.Client.OriginalNameAttribute("GetLoggedInUser")] public static global::Something.OData.Client.SomethingPortal.Da

我已将OData客户端T4模板从2更新为2.3,但该模板不再工作

 _container.Users.GetLoggedInUser().Expand(x => x.Debtor);
这是新生成的代码

    [global::Microsoft.OData.Client.OriginalNameAttribute("GetLoggedInUser")]
    public static global::Something.OData.Client.SomethingPortal.Data.UserSingle GetLoggedInUser(this global::Microsoft.OData.Client.DataServiceQuery<global::Something.OData.Client.SomethingPortal.Data.User> source)
    {
        if (!source.IsComposable)
        {
            throw new global::System.NotSupportedException("The previous function is not composable.");
        }

        return new global::Something.OData.Client.SomethingPortal.Data.UserSingle(source.CreateFunctionQuerySingle<global::Something.OData.Client.SomethingPortal.Data.User>("Default.GetLoggedInUser", false));
    }
[global::Microsoft.OData.Client.OriginalNameAttribute(“GetLoggedInUser”)]
公共静态全局::Something.OData.Client.SomethingPortal.Data.UserSingle GetLoggedInUser(此全局::Microsoft.OData.Client.DataServiceQuery源)
{
如果(!source.IsComposable)
{
抛出新的全局::System.NotSupportedException(“以前的函数不可组合”);
}
返回新的全局::Something.OData.Client.SomethingPortal.Data.UserSingle(source.CreateFunctionQuerySingle(“Default.GetLoggedInUser”,false));
}
这就是版本2生成的内容

    public static global::Something.OData.Client.SomethingPortal.Data.UserSingle GetLoggedInUser(this global::Microsoft.OData.Client.DataServiceQuery<global::Something.OData.Client.SomethingPortal.Data.User> source)
    {
        if (!source.IsComposable)
        {
            throw new global::System.NotSupportedException("The previous function is not composable.");
        }

        string parameterString = global::Microsoft.OData.Client.Serializer.GetParameterString(source.Context);
        return new global::Something.OData.Client.SomethingPortal.Data.UserSingle(source.Context, source.GetPath("Default.GetLoggedInUser" + parameterString), false);
    }
public static global::Something.OData.Client.Something portal.Data.UserSingle GetLoggedInUser(此全局::Microsoft.OData.Client.DataServiceQuery源)
{
如果(!source.IsComposable)
{
抛出新的全局::System.NotSupportedException(“以前的函数不可组合”);
}
string parameterString=global::Microsoft.OData.Client.Serializer.GetParameterString(source.Context);
返回新的全局::Something.OData.Client.SomethingPortal.Data.UserSingle(source.Context,source.GetPath(“Default.GetLoggedInUser”+参数字符串),false);
}
这就是这个函数的模式

  <Function Name=""GetLoggedInUser"" IsBound=""true"">
    <Parameter Name=""bindingParameter"" Type=""Collection(SomethingPortal.Data.User)"" />
    <ReturnType Type=""SomethingPortal.Data.User"" />
  </Function>

引发的异常是

Message=“只能从单个资源或作为类型的一部分选择单个属性。请指定键谓词以将实体集限制为单个实例,或将属性投影到命名或匿名类型。”

这是2.4中的一个bug,还是我需要在某个地方进行更改


感谢

通过在生成的代码之外添加工作方法作为扩展方法,创建了一个临时解决方案。感谢您报告此问题。这应该是OData客户端中的一个bug。打开了一个问题以跟踪它。通过在生成的代码之外添加工作方法作为扩展方法,创建了一个临时解决方案。感谢您报告此问题。这应该是OData客户端中的一个bug。打开一个问题来跟踪它。