【发布时间】:2014-01-07 09:12:39
【问题描述】:
我刚刚开始使用 Wcf 数据服务来公开实体框架数据库。我对 WCF 非常熟悉,但对数据服务并不熟悉。
我正在尝试创建客户端,而无需运行程序并添加服务引用。
这是因为数据库尚未创建或未完成,并且还有其他开发人员正在处理此问题。
我已经研究过使用 DataService<T>.AttachHost() 方法,但这需要 IDataServiceHost 显然 DataServiceHost 没有实现。
有没有人知道实现这一点的方法,还是我坚持添加服务参考。
谢谢
编辑
只是为了解释一下,因为经过反思,我的问题措辞不佳。
这是网络设置的示例
SQL 服务器 | 防火墙 |应用服务器 | 防火墙 |客户
所以在 SQL SERVER (MS-SQL) 上有一个数据库
WcfDataService 在 APP SERVER 的 1234 端口上运行。WcfDataService 通过继承 DataService<MyContext> 并托管在 Windows 服务中实现
客户端需要连接到 DataService,使用类似的端点 - htp://app-server:123465/
如何创建一个类,最好使用关联的接口,这样我就可以对连接到 DataService 并使用其方法的单元进行单元测试。
谢谢
【问题讨论】:
-
您可以使用 DataSvcUtil.exe 工具从实体模型生成代码文件,而无需在任何地方托管服务。请参阅msdn.microsoft.com/en-us/library/dd756369%28v=vs.110%29.aspx 了解更多信息。
-
应该说我们先用code,所以entites是POCO,有DbContext。这种设置是否可以使用这种方法,因为我不确定 .csdl 文件是什么?
-
.csdl 文件只是在托管服务时公开的元数据文件,它是您的实体模型的表示。添加服务引用使用该文件生成客户端 DataServiceContext 代码。我搜索了很长时间,但没有找到从代码优先模型生成 DataServiceContext 代码的方法。
-
您可能有幸查看了 odata 团队不久前发布的 t4 模板,它们可能会根据您的需要进行调整:blogs.msdn.com/b/astoriateam/archive/2012/07/02/…
-
谢谢 ChrisO 我会调查 T4,我已经更新了这个问题,以防万一有什么不清楚的地方。
标签: c# wcf entity-framework odata wcf-data-services