由于将生成器升级到2.4,因此扩展OData函数调用结果会引发异常

时间:2015-10-14 00:43:42

标签: 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.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));
    }

这是版本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);
    }

这就是这个函数的架构看起来像

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

抛出的异常是

  

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

这是2.4中的错误还是我需要在某处做出改变?

由于

0 个答案:

没有答案