我想为我的用户提供丰富的查询功能,以便他们可以动态添加Where子句,更改排序顺序和分组。 oData似乎是这项工作的最佳技术,但我不知道如何在MVC应用程序中正确实现它。
1)如何将支持oData的功能丰富的客户端连接到MVC架构?
2)我必须在我的存储库中公开IQueryable吗?
3)在MVC中使用2个连接表时,是否可以解释如何创建,更新或删除? (在服务层?)
答案 0 :(得分:2)
开始学习OData的好地方在这里: http://msdn.microsoft.com/en-us/data/odata.aspx
一般情况下,如果需要OData和Web Services,则应使用它们1)因为出于安全或性能原因需要分离物理层,或者2)多个应用程序或消费者需要使用相同的API。当然还有其他原因,但一般来说,如果你不得不问OData是否有意义,你就没有这些要求。 ;)
答案 1 :(得分:2)
我在MVC中编写Restfull API并找到了ODATA。 MS的伟大实施。
http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api
是您在odata上获得良好开端的地方。
我看了这个页面
并立即启动并运行。
希望这会有所帮助。与设计和消费一起工作是一件好事。
www.odata.org/了解更多信息
PS。我发布的链接也有CRUD操作示例.... PSS。 IQueryable是重点......
答案 2 :(得分:1)
我将以一种简单的方式解释它,我希望它对你有用。
1)创建空的控制台应用程序。
2)对任何公共OData服务进行服务引用。即http://services.odata.org/northwind/northwind.svc/
此Visual Studio将添加一些更多的程序集引用,如下所示
3)编写以下代码
使用System;使用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课程中。
你也得到这样的财产价值:
P.S。另请参阅此视频http://www.youtube.com/watch?v=e07TzkQyops。