在 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的主要内容,如果未能解决你的问题,请参考以下文章
在路由路径上公开属于 MVC 应用程序中区域的 WCF 服务
通过 OData 公开的 Azure Data Lake Store
无法使用 ASP.NET (MVC 4) Web API OData Prerelease 加载文件或程序集 System.Net.Http,版本 = 4.0.0.0