【发布时间】:2013-09-10 16:18:38
【问题描述】:
为了避免使用 WCF 数据服务的维护开销,我正在避免生成服务引用。
目前我将 System.Data.Services.Client.DataServiceContext 类与 DataServiceQuery 结合使用。这可行,但意味着代码或配置中必须有一些硬编码的字符串——实体集名称和 URI。
有什么替代方法?我需要注意哪些陷阱?
我看到提到创建ChannelFactory
但是,这看起来很麻烦,或者至少从表面上看,它似乎并没有比我目前所做的更好。
编辑 更详细一点 - 这是公开 EF DBContext 的服务:
public class DocumentService : DataService<DocumentContext>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("Documents", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
config.UseVerboseErrors = true;
}
protected override DocumentContext CreateDataSource()
{
return new DocumentContext("DocumentsContext");
}
}
以及我如何在没有明确引用的情况下调用它:
new DataServiceContext(uri, maxVersion).CreateQuery<DocumentEntity>(entitySetName)....etc
有什么替代方法? = DataServiceContext 类的替代品
【问题讨论】:
-
This works but means there has to be some hard coded strings如果用户可以更改字符串,则可以将它们保存在配置文件中。在任何情况下,您都需要这些端点来创建服务引用。
标签: c# wcf-data-services .net-4.5