在 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的主要内容,如果未能解决你的问题,请参考以下文章