Breeze问题与WebApi 2 ODataConventionModelBuilder元数据有关

时间:2014-06-03 13:19:04

标签: asp.net-web-api breeze asp.net-web-api2

我目前正在使用EF6和代码优先方法开发OData Web API 2服务。

breeze文档建议在ODataConventionModelBuilder上使用EdmBuilder有多种原因(http://www.breezejs.com/documentation/odata-server)。我有几个问题 - :

1)ODataConventionModelBuilder似乎没有生成' ReferentialConstraint'因此,在使用breeze js客户端扩展$后,对$ select产生影响。但奇怪的是,当直接输入浏览器时(使用$ expand& $ select),这似乎也有效,是否有任何解决方法可以使用ODataConventionModelBuilder?链接中陈述的所有问题是否仍然适用?

2)我们选择了一个纯OData服务来使我们的API可供各种OData消费者访问,我们希望保持我们的服务通用而没有任何微风味。添加EdmBuilder会使服务变得特别明确吗?

1 个答案:

答案 0 :(得分:2)

正如您发现Microsoft的ODataConventionModelBuilder不提供引用约束。到目前为止,使用EdmBuilder是唯一的解决方法。使用EdmBuilder不会使服务变得特定,因为那里没有特定于breeze的代码。 (EdmBuilder的代码实际上是由Microsoft工程师提供的。)但是,使用EdmBuilder确实阻止您使用其余的ODataConventionModelBuilder功能,这很烦人。

我们正在考虑的是,允许通过一系列api调用修改/更新服务器提供的OData元数据,您可以在客户端直接声明关系约束 。然后,您将使用ODataConventionModel构建器而不是EdmBuilder并使用' new' api to' reset'约束。这显然不如从服务器检索数据那么好,但在MS修复ODataConventionModelBuilder之前,这可能是我们最好的选择。

这会在你的场景中有价值吗?

此外,请与MS联系,让他们知道您的沮丧情绪。 :)