我想使用 U2 Toolkit for .NET 和 U2 数据库创建 WCF oData 服务(RESTful 服务)。然后我想在任何 .NET 客户端应用程序中使用 oData 服务。
1 回答
请看下面我的回答:
概述
WCF 数据服务将实体数据公开为数据服务。可以使用 U2 Toolkit for .NET 从 U2 数据库创建此实体数据。本主题向您展示如何在基于现有数据库的 Visual Studio Web 应用程序中创建基于实体框架的数据模型,并使用此数据模型创建新的 WCF oData 服务(RESTful 服务)。您可以在不同的 .NET 应用程序中使用 WCF oData 服务,例如:
- WPF 应用程序
- Windows 8 Metro 风格应用程序
- 办公室Excel
安装
您需要为 .NET v 1.2.0 安装 U2 工具包。它包含用于 Visual Studio 的 U2 ADO.NET 提供程序和 U2 数据库插件
使用现有 U2 帐户创建实体数据模型
我们将使用 U2 UniVerse 的名为“HS.SALES”的示例数据库。1. 创建名为“U2_WCF_oData_WebApplication”的 ASP.NET Web 应用程序</p>
- 在项目菜单上,单击添加新项目。
- 在模板窗格中,单击数据类别,然后选择 ADO.NET 实体数据模型。
键入模型名称,然后单击添加。
在选择模型内容对话框中,选择从数据库生成。然后单击下一步。
- 单击新建连接按钮。
- 在“连接属性”对话框中,键入连接字符串参数,然后单击“确定”。
- 确保选中将 App.Config 中的实体连接设置保存为:复选框。然后单击下一步。
- 将“实体”更改为“客户实体”
- 在“选择您的数据库对象”对话框中,选择您计划在数据服务中公开的 CUSTOMER 和 CUSTOMER_ORDERS。为“CustomerModel”修改“HS.SALESModel”。
- 单击完成以完成向导。
使用新数据模型(客户模型)创建 WCF oData 服务(RESTful 服务)
- 在 Visual Studio 中,打开表示数据模型的 Customer.edmx 文件。
- 在模型浏览器中,右键单击模型,单击属性,然后记下实体容器的名称。
- 在解决方案资源管理器中,右键单击 ASP.NET 项目的名称,然后单击“添加新项”。
- 在“添加新项”对话框中,选择 WCF 数据服务。
- 提供服务的名称,然后单击“确定”。
- 在数据服务的代码中,将注释 /* TODO: put your data source class name here */ 在定义数据服务的类的定义中替换为继承自 ObjectContext 类的类型,即实体容器数据模型,这在步骤 2 中已记录。
public class U2_Customer_WcfDataService : DataService< /* TODO: 把你的数据源类名放在这里 */ >
public class U2_Customer_WcfDataService : DataService< CustomerEntities >
在数据服务的代码中,使授权客户端能够访问数据服务公开的实体集。有关更多信息,请参阅创建数据服务。
// config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
要使用 Web 浏览器测试“U2_Customer_WcfDataService.svc”数据服务,请按 Visual Studio ->Debug->StartWithoutDebugging
使用 WCF oData 服务(RESTful 服务)
- 在同一解决方案中创建 WPF 项目。将项目重命名为“U2_Consumer_WpfApplication”</li>
2.添加服务参考
- 按发现按钮,重命名“U2_WCF_oData_ServiceReference”。按确定。
- 转到数据-> 显示数据源。
- 将“客户”拖放到 WPF 设计器中。
打开“MainWindow.xaml.cs”文件。添加这一行(你的 uri 会有所不同)。
私有 Uri svcUri = new Uri(" http://localhost:38346/U2_Customer_WcfDataService.svc/ ");
添加这一行。
U2_WCF_oData_ServiceReference.CustomerEntities ctx = new U2_WCF_oData_ServiceReference.CustomerEntities(svcUri);
添加这一行。
cUSTOMERSViewSource.Source = ctx.CUSTOMERs.ToList();
您的竞争代码将如下所示。公共部分类 MainWindow : Window { private Uri svcUri = new Uri(" http://localhost:38346/U2_Customer_WcfDataService.svc/ ");
public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { U2_WCF_oData_ServiceReference.CustomerEntities ctx = new U2_WCF_oData_ServiceReference.CustomerEntities(svcUri); System.Windows.Data.CollectionViewSource cUSTOMERsViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("cUSTOMERsViewSource"))); // Load data by setting the CollectionViewSource.Source property: // cUSTOMERsViewSource.Source = [generic data source] cUSTOMERsViewSource.Source = ctx.CUSTOMERs.ToList(); }
}
将 WPF 应用程序设置为“启动项目”。运行 WPF 应用程序。