在 MVC 应用程序上公开 OData

Posted

技术标签:

【中文标题】在 MVC 应用程序上公开 OData【英文标题】:Exposing OData on a MVC application 【发布时间】:2011-05-06 08:52:25 【问题描述】:

我想为我的用户提供丰富的查询功能,以便他们可以动态添加 Where 子句、更改排序顺序和分组。 oData 似乎是最适合这项工作的技术,但我不知道如何在 MVC 应用程序中正确实现它。

1) 如何将支持 oData 的功能丰富的客户端与 MVC 架构连接起来?

2) 我必须在我的存储库上公开 IQueryable 吗?

3) 谁能解释在 MVC 中使用 2 个连接表时如何创建、更新或删除? (在服务层?)

【问题讨论】:

【参考方案1】:

这里是开始学习 OData 的好地方: http://msdn.microsoft.com/en-us/data/odata.aspx

如果需要,通常应使用 OData 和 Web 服务,因为 1) 出于安全或性能原因,您的物理层需要分开,或者 2) 多个应用程序或消费者需要使用相同的 API。当然还有其他原因,但通常如果您必须询问 OData 是否有意义,您没有这些要求。 ;)

【讨论】:

【参考方案2】:

我在 MVC 中编写了一个 Restfull API 并找到了 ODATA。 MS 的出色实施。

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api

您可以从这里开始使用 odata。

我看过这个页面

http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/getting-started-with-odata-in-web-api/create-a-read-only-odata-endpoint

并立即启动并运行。

希望这会有所帮助。与设计和消费一起工作真是太好了。

www.odata.org/ 了解更多信息

PS。我发布的链接也有 CRUD 操作示例.... PSS。 IQueryable 是重点.....

【讨论】:

【参考方案3】:

我将用一些简单的方式来解释它,希望它对你有用。

1) 创建空的控制台应用程序。

2) 对任何公共 OData 服务进行服务引用。 IE。 http://services.odata.org/northwind/northwind.svc/

在此之后,Visual Studio 将添加更多的程序集引用,如下所示

3) 编写如下代码

使用系统;使用 System.Collections.Generic;使用 System.Data.Services.Client;使用 System.Linq;使用 System.Text; 使用 System.Threading.Tasks;

namespace ConsoleApplication4

    class Program
    
        static DataServiceContext  ctx = new DataServiceContext(new Uri("http://services.odata.org/northwind/northwind.svc/"));

        static void Main(string[] args)
        
            IEnumerable<ServiceReference1.Category> response = 
                ctx.Execute<ServiceReference1.Category>(new Uri("http://services.odata.org/northwind/northwind.svc/Categories"));

        
    

4) 在 Main 方法的末尾设置断点。现在调试应用程序。 您将看到类别列表。

5) 如果OData 已经公开了所有CRUD 的权限,那么你可以这样做。 当然,您可以在 ASP .NET MVC 中返回 response,但首先您必须将其转换为您的 Model 类。

也许你可以保持静态DataServiceContext ctx = new DataServiceContext(new Uri("http://services.odata.org/northwind/northwind.svc/")); 在你的BaseController 班级中。

你还可以得到这样的属性值:

附:也可以看看这个视频http://www.youtube.com/watch?v=e07TzkQyops。

【讨论】:

以上是关于在 MVC 应用程序上公开 OData的主要内容,如果未能解决你的问题,请参考以下文章

如何将完整的数据库架构公开为 OData 服务

在路由路径上公开属于 MVC 应用程序中区域的 WCF 服务

通过 OData 公开的 Azure Data Lake Store

Breeze、OData 和无 EF

无法使用 ASP.NET (MVC 4) Web API OData Prerelease 加载文件或程序集 System.Net.Http,版本 = 4.0.0.0

如何在自托管 Web API 应用程序中配置 OData 端点