我的数据库中有一个名为“Task”的表。任务包含以下字段: - ID - 说明 - AssignedUserID - TaskTypeID
我通过在使用ADO.NET实体数据模型后自动创建的类访问此表。我可以在Silverlight应用程序的DataGrid中加载并显示上面提到的字段。但是,AssignedUserID和TaskTypeID不是很具描述性。所以我决定创建一个存储过程,通过各自的查找表获取任务以及用户和任务类型名称。这就是问题所在。
我想在自动生成的“Task”类中创建一些自定义属性。自定义属性将命名为“AssignedUserName”和“TaskType”。然后,我想让我的Silverlight客户端可以使用这些属性。但是,我似乎无法弄清楚如何将它们暴露给我的Silverlight客户端。
有人可以帮忙吗? 谢谢
答案 0 :(得分:3)
如果您的EDM与DomainService位于同一个项目中,您可以执行以下操作:
在Entity类型上创建一个分部类,并在那里添加你的计算属性。
将文件命名为**。shared.cs
然后它将与客户端/ Silverlight代码自动共享。
<小时/> 编辑: 我假设您可以在app逻辑中进行此计算,而不是使用sp,这对我来说似乎更直接。
如果您使用SP,则需要使用设计器中的功能导入功能将SP映射到EDM中的功能。然后,此函数可以返回实体,并根据您的喜好映射属性。
更简单的方法是使用对象模型:将Task.AssignedUser和Task.TaskType 对象从Task类中删除。将这些映射到数据库中的查找表。这将是开箱即用的(假设Id是那些查找表的FK)。
所以,有两个选择:
1或2是恕我直言的最佳选择。
答案 1 :(得分:1)
另一种方法可能是更新您的EF模型以包含查找表,添加表之间的关联,在(自动生成的)元数据类中添加[Include]并让EF和RIA为您执行此操作。也许