Silverlight / .NET RIA服务 - 向客户端公开自定义属性

时间:2010-01-28 15:45:36

标签: silverlight

我的数据库中有一个名为“Task”的表。任务包含以下字段: - ID - 说明 - AssignedUserID - TaskTypeID

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

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

有人可以帮忙吗? 谢谢

2 个答案:

答案 0 :(得分:3)

如果您的EDM与DomainService位于同一个项目中,您可以执行以下操作:

在Entity类型上创建一个分部类,并在那里添加你的计算属性。

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

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

<小时/> 编辑: 我假设您可以在app逻辑中进行此计算,而不是使用sp,这对我来说似乎更直接。

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

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

所以,有两个选择:

  1. 使用app-logic - 分部类中的属性来返回描述
  2. 使用由FK驱动的对象模型来查找表,然后只访问 Task.AssignedUser.Name Task.TaskType.Description
  3. 使用函数导入来访问SP并将返回的值映射到实体属性
  4. 1或2是恕我直言的最佳选择。

答案 1 :(得分:1)

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