【问题标题】:WCF Data Services without using Entity Framework不使用实体框架的 WCF 数据服务
【发布时间】:2011-11-15 12:39:09
【问题描述】:

我想通过 WCF 数据服务公开遗留的 .net 代码。但是没有在任何地方使用实体框架。基本上,我目前每 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;}
}

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      请参阅这篇 WCF Data Services Advanced Topics 文章,其中展示了如何使用例如为您的 ORM 提供亚音速。

      基本上,涉及的步骤是:

      • 您需要为您的所有类公开 IQueryable&lt;T&gt; 集合 - 您可以通过某种包含所有这些集合的 DataModelDataContext 类来做到这一点

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

      • 在“数据上下文”上实现 IUpdatable 接口,以启用更改跟踪和 CUD 操作处理

      【讨论】:

        【解决方案3】:

        我实际上不想为自己做广告,但您的问题与我们在工作中遇到的情况相同。我们已经接管了 Jonathan Carter 开发的原始工具包,用于将 WCF 数据服务映射到您想要的任何东西。

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

        【讨论】:

        • 这很好。答案是相关的,并且您清楚地披露了您的从属关系。
        • 谢谢伙计。目前我已经选择了反射提供者。
        猜你喜欢
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-26
        • 1970-01-01
        相关资源
        最近更新 更多