【问题标题】:Accessing Business Object Methods from Silverlight从 Silverlight 访问业务对象方法
【发布时间】:2010-12-17 22:49:21
【问题描述】:

我是 Sliverlight 和 RIA 服务的新手,但遇到了一些困难。

我有一个 Silverlight 应用程序,它需要访问我们的 DAL 以获取我们的自定义对象来填充 UI。我设置了 RIA 服务。在我的 Web 应用程序中,我添加了一个 DomainService 并调用 DAL 服务来取回数据。

我有一个单独的项目来存放我们的业务对象,DomainService 返回这些对象的列表。在业务对象中,我已将 Key 属性添加到 ID 属性。

一切正常。我可以调用服务,我可以获取对象列表。我可以在我的 Silverlight 应用程序中看到它们,并且可以看到我的对象的所有属性。

我唯一不知道的是如何访问这些方法。我的业务对象中有一些方法需要在我的 Silverlight 应用程序中访问,但它看起来并没有公开该方法。

有没有一种方法可以让我从类中访问这些方法?或者我是否必须在我的 DomainService 对象中编写一个包装器来为我调用此方法?我宁愿第一个真的。

任何帮助将不胜感激。这已经阻塞了太久了。

【问题讨论】:

    标签: silverlight-4.0 ria domainservices


    【解决方案1】:

    听起来你很接近。

    从您描述的方式看来,业务对象类没有被实例化。您需要将“存根”方法放入允许 Silverlight 使用业务对象上的方法的 Web 项目 (DomainService)。

    在您的 DomainService 类中:

    using System.ServiceModel.DomainServices.Hosting; 
    using System.ServiceModel.DomainServices.Server; 
    using XYX.YourBusinessClassLibrary;  <-- need reference in web app
    
    [EnableClientAccess()] 
    public class linkdirectoryDS : DomainService 
    {
    
        public IEnumerable<Category> GetCategories() 
        { 
            Category cat = new Category(); 
            return cat.Retrieve(); 
        } 
    } 
    

    关于GetCategories方法:

    它必须是一个方法而不是一个属性。

    必须返回以下之一:

    • 单个实体
    • 一个 IEnumerable,其中 T 是 实体
    • 一个 IQueryable,其中 T 是 实体

    方法可以有任何名称、参数。

    也许我只是描述了你不想做的事情......如果是这样我道歉。

    【讨论】:

    • 是的,这就是我希望我不必这样做的方式。我在周末做了更多的阅读,一切似乎都指向了这个方向。感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2015-07-09
    • 2010-11-18
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多