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

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc model-view-controller data-access-layer crud odata


    【解决方案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

        【讨论】:

          猜你喜欢
          • 2018-02-10
          • 1970-01-01
          • 2022-01-02
          • 2021-05-20
          • 2017-05-16
          • 2011-05-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多