【问题标题】:Silverlight / .NET RIA Services - Exposing a custom property to the clientSilverlight / .NET RIA 服务 - 向客户端公开自定义属性
【发布时间】:2010-01-28 15:45:35
【问题描述】:

我的数据库中有一个名为“Task”的表。任务具有以下字段: - ID - 描述 - 分配的用户 ID - 任务类型ID

我通过使用 ADO.NET 实体数据模型后自动创建的类访问此表。我可以在我的 Silverlight 应用程序的 DataGrid 中加载和显示上述字段。但是,AssignedUserID 和 TaskTypeID 的描述性不是很强。所以我决定创建一个存储过程,通过它们各自的查找表获取任务以及用户和任务类型名称。这就是问题所在。

我想在自动生成的“任务”类中创建一些自定义属性。自定义属性将命名为“AssignedUserName”和“TaskType”。然后,我想让这些属性对我的 Silverlight 客户端可用。但是,我似乎无法弄清楚如何让它们暴露给我的 Silverlight 客户端。

有人可以帮忙吗? 谢谢

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    如果您的 EDM 与 DomainService 在同一个项目中,您可以这样做:

    在 Entity 类型上创建一个部分类,并在其中添加您的计算属性。

    将文件命名为 **.shared.cs

    然后它将与客户端/Silverlight 代码自动共享。


    编辑: 我假设您可以在应用程序逻辑中进行此计算,而不是使用 sp,这对我来说似乎更简单。

    如果您确实使用了 SP,则需要使用设计器中的函数导入 功能将 SP 映射到 EDM 中的函数。然后,此函数可以返回实体,并根据您的喜好映射属性。

    更简单的方法是只使用对象模型:让 Task.AssignedUser 和 Task.TaskType objects 脱离 Task 类。将这些映射到数据库中的查找表。这将开箱即用(假设 Id 是那些查找表的 FK)。

    所以,有几个选择:

    1. 在部分类中使用 app-logic--properties 来返回描述
    2. 使用由 FK 驱动的对象模型来查找表,然后只需访问 Task.AssignedUser.NameTask.TaskType.Description
    3. 使用函数导入访问 SP 并将返回值映射到实体属性

    1 或 2 是恕我直言的最佳选择。

    【讨论】:

      【解决方案2】:

      另一种方法可能是更新您的 EF 模型以包含查找表,在表之间添加关联,在(自动生成的)元数据类中添加 [Include],然后让 EF 和 RIA 为您完成。也许吧。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-20
        • 1970-01-01
        相关资源
        最近更新 更多