不使用实体框架的WCF数据服务

时间:2011-11-15 12:39:10

标签: entity-framework-4 entity-framework-4.1 wcf-data-services odata

我想通过WCF数据服务公开遗留的.net代码。但不在任何地方使用Entity Framework。基本上我目前每隔X小时从db填充一次我的所有模型,并将这些模型转储到缓存中。当前的Web服务从此缓存中提取所有信息。我现在必须将所有这些转换为WCF数据服务,主要是为了支持OData协议。

最简单,最快捷的方式是什么(同样,没有实体框架)

下面是我的模型目前的样子示例:

public class Country
{
    public string CountryCode {get; set;}
    public string CountryName {get; set;}
    public List<State> ListOfStates {get; set;}
}

public class State
{
    public string StateCode {get; set;}
    public string StateName {get; set;}
}

提前致谢。

3 个答案:

答案 0 :(得分:2)

这不是黑魔法 - 而是一点工作。

请参阅此WCF Data Services Advanced Topics文章,该文章介绍了如何使用,例如您的ORM亚音速。

基本上,涉及的步骤是:

  • 您需要为所有课程公开IQueryable<T>个集合 - 您可以通过包含所有这些集合的某种DataModelDataContext类来实现此目的

如果您希望能够插入和更新数据,还需要:

  • 在您的“数据上下文”中实施IUpdatable界面,以启用更改跟踪和处理CUD操作

答案 1 :(得分:2)

您需要使用reflection provider而不是实体框架提供程序 - 在WCF数据服务中公开的自定义上下文类。请注意,默认情况下,反射提供程序仅公开只读数据。如果您需要通过OData服务更新数据,则还必须在上下文类中实现IUpdateble接口。

答案 2 :(得分:1)

我实际上不想做广告,但你的问题与我们在这里工作的情况相同。我们接管了Jonathan Carter开发的原始工具包,用于将WCF DataServices映射到您想要的任何内容。

尝试查看http://wcfdstoolkit.codeplex.com/,看看这是否能解决您的问题。该文档可通过Jonathan的博客链接获取,该博客介绍如何设置&amp;使用工具包。但我建议下载9月发布分支,以确保您已经解决了所有错误修复。