在 SharePoint 2013 中使用 OData 和 ECT

原文发布于 2012 年 12 月 7 日(星期五)

SharePoint 2013 BCS 领域中的一项不错的增强功能是,SharePoint 现在可以使用 BDC 应用程序中的 OData。最近,当我查看此过程时,偶然发现了几个技术空白,我觉得我需要在这里介绍一下它们,以防任何其他人遇到类似的问题。首先,我建议您先浏览以下文档来了解有关为 OData 创建应用程序的基础知识:https://msdn.microsoft.com/zh-cn/library/sharepoint/jj163967.aspx。从此处获得的主要信息是,您无法在 SharePoint Designer 中创建连接到 OData 源的 BDC 应用程序 - 为此,您需要使用诸如 Visual Studio 这样的工具来创建外部内容类型 (ECT)。

上述链接所指向的文档将指导您完成创建 ECT 的过程。其中将说明如何在 SharePoint App 中使用这些 ECT 并按此方式对其进行部署,但并未说明您在需要将其添加到 BDC 目录以便用于多个网站集时应执行的操作,所以需要撰写这篇文章。要了解的第一点是,您在执行上文所述的过程时,将为每个实体(如表)创建一个 ECT。之所以说这一点很重要,是因为他们将使用 ECT 文件中的共享名,这将阻止您将一个以上的实体上载到 BDC 目录。若要在 SharePoint 中使用所有这些实体,您需要执行以下操作:

  1. 在 Visual Studio 中右键单击 ECT 文件,选择“打开方式...”(Open With...), 然后选择“XML(文本)编辑器”(XML (Text) Editor)。在该文档顶部的 Model 元素中,您将看到一个 Name 属性。此值在您加载到 BDC 的所有 ECT 之间必须是唯一的,因此您应将每个值均更改为此实体的一个描述性值,如“Customers Table”。
  2. 您可以(但不是必须要)更改 Entity 元素的 Namespace,它在文档中占据大约 20 行。我更改了我自己的 Namespace 以便与模型名称保持一致,但这只是一种风格选择,并不是必须要这样做。
  3. 您在更改并保存文件后,可以直接将 .ect 文件上载到 BDC。只需使用默认选项(这是一个模型),然后单击“确定”(OK) 按钮,您就完成此操作了。
  4. 在导入模型后,请不要忘记向用户授予这些模型的使用权限;没有使用权限将导致一切变得毫无意义。

最后一个值得注意问题的是 - 您不能直接通过 SQL 数据库、Azure 表存储等工具来获取 OData 元数据终结点。幸运的是,为 SQL 添加该终结点比较容易。简单地说,您可以:

  1. 创建新的空 ASP.NET Web 应用程序
  2. 添加 ADO.NET 实体数据模型
  3. 添加 WCF 数据服务
  4. 在 WCF 数据服务中,您需要在类构造函数中设置 Type;一开始,这可能让您有点困惑;您想要寻找 myDataConnection.Context.tt 之类的名称的文件(应该位于 App_Code 文件夹中)。如果展开该文件,您应该会在它下面看到 myDataConnection.Context.cs 类。如果打开该类,您将看到您需要有关 WCF 数据服务的两条信息:1) 类名称,您将其用作 WCF 数据服务类构造函数的 Type。2) WCF 数据服务所支持的实体的名称(像 get、set 属性那样实现)。您还将需要 WCF 数据服务中的实体名称,因为您至少需要为要公开的每个实体创建“SetEntitySetAccessRules”。当您添加 WCF 数据服务时,相关注释中将更详细地对此进行说明 - 我现在只是试图告诉您在哪里可以找到创建这些规则之一时要使用的实体名称。

 

这是一篇本地化的博客文章。请访问 Using OData and ECTs in SharePoint 2013 以查看原文