2

这个问题是另一个问题的延伸,但我认为它值得拥有自己的线索。请参阅 查看 Silverlight 问题

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

我想在 Silverlight 3.0 中使用它,所以我需要使用实体框架和 RIA 服务以某种方式连接它。我还需要它是可绑定的(Silverlight 网格),所以我需要这些动态列可以通过属性访问(网格限制)。有任何想法吗?

4

2 回答 2

2

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

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

  1. 放弃使用不返回已定义模式的过程的整个想法。在编译之前,您将永远无法映射这样的过程。
  2. 在运行时动态生成 EDMX,以便在调用之前将实体类型映射到过程的预期输出列。请注意,实体框架的当前版本对过程返回的列有点挑剔。您可以在 MSDN 上找到有关此的文档。
  3. 在 .NET 4.0 中,有一些新功能允许您在运行时通知实体框架您的客户端架构,而无需先生成 EDMX。您可能能够利用这些功能将某些实体类型映射到过程的预期输出列。
  4. 同样,在 .NET 4.0 中,可能支持返回标量值的 proc。我不记得是不是这样。
  5. 您始终可以从实体连接中获取标准数据库连接,并使用常规 SqlCommands 直接执行该过程。不幸的是,这使您的代码特定于数据库提供者,但它可能是解决您的问题的最简单的方法。实际上,使用这样的过程已经是特定于数据库服务器的。
于 2009-06-12T15:33:18.213 回答
0

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

于 2009-09-27T00:19:01.137 回答