使用实体框架从 WCF RIA 服务调用另一个 WCF 数据服务

发布于 2024-12-11 10:23:05 字数 346 浏览 0 评论 0原文

我想使用 WCF RIA 服务来访问我的 Silverlight 应用程序中的数据。但是,数据不是从本地数据存储提供的,而是从另一个 WCF 数据服务提供的(我正在访问外部 CRM 系统)。我不想直接访问外部服务,因为我必须在 RIA 服务中混合来自多个数据源的数据。

这可能吗?实现这一目标的最简单方法是什么?一些 C# 源代码将不胜感激。

编辑: 核心问题是如何以简单的方式从外部服务填充实体。有一个相关问题,但答案并不能解决我的问题。

I would like to use WCF RIA Services to access data from my Silverlight Application. However the data is not provided from a local data storage, but from another WCF Data Service (I'm accessing an external CRM system). I don't want to access the external service directly because I have to mash up data from several data sources within my RIA service.

Is this possible an what would be the easiest way to achieve this? Some source code in C# would be appreciated.

EDIT:
The central problem is how to fill an entity from an external service in an easy way. There is a related question, but the answer does not solve my problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暮年 2024-12-18 10:23:05

我认为您的困惑可能是用于添加 RIA 服务的 Visual Studio 向导假定您将使用 EntityFramework 来存储数据。我认为您不想使用第二个 WCF 服务的数据创建 EF 模型。相反,创建直接从 DomainService 派生的 RIA 服务并重写您需要的方法。在每个查询方法中,只需查询远程服务并将结果返回给Silverlight客户端。为了使 RIA 服务魔术代码生成正常工作,您需要在应用程序中定义一组 DTO 对象,用于包装来自远程 WCF 服务的结果。

这是一个快速示例。注意——我编造这个只是为了说明我的意思。您将需要调用您正在使用的实际服务并构建错误处理、输入检查等。

namespace YourApp.Web 
{ 
    [EnableClientAccess] 
    public class WcfRelayDomainService : DomainService 
    { 
        public IQueryable<Restaurant> GetRestaurants() 
        { 
            // You should create a method that wraps your WCF call
            // and returns the result as IQueryable;
            IQueryable<MyDto> mydtos = RemoteWCF.QueryMethod().ToQueryable();
            return mydtos; 
        } 
        public void UpdateDTO(MyDto dto) 
        { 
            // For update or delete, wrap the calls to the remote
            // service in your RIA services like this.
            RemoteWCF.UpdateMethod(dto);
        }
    }
}

希望对您有所帮助!请参阅如何设置 RIA有关更多提示,请参阅使用 Silverlight 4.0 且不使用 EF 的服务

I think your confusion may be that the Visual Studio wizard for adding a RIA service assumes you will use the EntityFramework for your data. I don't think you want to create an EF model out of the data from a second WCF service. Instead, create your RIA service to derive directly from DomainService and override the methods that you need. In each query method, simply query the remote service and return the result to the Silverlight client. In order for the RIA services magic code generation to work you will need to define a set of DTO objects in your app that wrap the results from the remote WCF service.

Here is a quick sample. Note - I just made this up to illustrate what I mean. You will need to put in calls to the actual service you are using and build error handling, input checking, etc.

namespace YourApp.Web 
{ 
    [EnableClientAccess] 
    public class WcfRelayDomainService : DomainService 
    { 
        public IQueryable<Restaurant> GetRestaurants() 
        { 
            // You should create a method that wraps your WCF call
            // and returns the result as IQueryable;
            IQueryable<MyDto> mydtos = RemoteWCF.QueryMethod().ToQueryable();
            return mydtos; 
        } 
        public void UpdateDTO(MyDto dto) 
        { 
            // For update or delete, wrap the calls to the remote
            // service in your RIA services like this.
            RemoteWCF.UpdateMethod(dto);
        }
    }
}

Hope that helps you out! See How to set up RIA services with Silverlight 4.0 and without EF for some more tips.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文