具有实体框架和RIA服务的动态数据

时间:2009-06-12 14:44:55

标签: entity-framework silverlight-3.0 wcf-ria-services

这个问题是另一个问题的延伸,但我认为它保证了它自己的主题。见See Silverlight Question

我有一个存储过程(SQL 2005),每次调用它时都会返回一个动态数据集(不同的列/模式)。

我想在Silverlight 3.0中使用它,所以我需要以某种方式使用Entity Framework和RIA Services进行连接。我还需要它是Bindable(Silverlight Grid),因此我需要通过属性(网格限制)访问这些动态列。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

在当前发布的Entity Framework版本中,您可以映射的唯一存储过程类型是返回实体类型的存储过程。通常,在编译之前完成映射,尽管理论上至少在运行时似乎可以生成实体框架元数据。

因此,我看到了一些选择。

  1. 放弃使用不返回已定义架构的过程的整个想法。在编译之前,您永远无法映射这样的过程。
  2. 在运行时动态生成EDMX,以便在调用之前将实体类型映射到过程的预期输出列。请注意,当前版本的实体框架对于过程返回的列有点挑剔;您可以在MSDN上找到有关此文档的文档。
  3. 在.NET 4.0中,有new features which allow you to inform the Entity Framework about your client schema at runtime without having to generate EDMX first。您可以利用这些功能将某些实体类型映射到过程的预期输出列。
  4. 同样,在.NET 4.0中,可能支持返回标量值的过程。我不记得是不是这样。
  5. 您始终可以从实体连接获取标准数据库连接,并使用常规SqlCommands直接执行该过程。不幸的是,这会使您的代码数据库特定于提供程序,但它可能是您问题的最简单的解决方案。实际上,完全使用这样的过程已经是数据库服务器特定的。

答案 1 :(得分:0)

您可以使用WCF Web服务包装器来访问您的SP并使用WCF服务作为数据源Brad Abrams可以在他关于RIA服务的系列文章中做到这一点