Динамические данные с Entity Framework и RIA Services - PullRequest
2 голосов
/ 12 июня 2009

Этот вопрос является продолжением другого вопроса, но я думаю, что он требует своей собственной темы. См. См. Вопрос Silverlight

У меня есть хранимая процедура (SQL 2005), которая возвращает динамический набор данных (разные столбцы / схему) каждый раз, когда он вызывается.

Я хочу использовать это в Silverlight 3.0, поэтому мне нужно каким-то образом подключить его с помощью Entity Framework и RIA Services. Мне также нужно, чтобы это было Bindable (Silverlight Grid), поэтому мне нужно, чтобы эти динамические столбцы были доступны через свойства (ограничение сетки). Есть идеи?

Ответы [ 2 ]

2 голосов
/ 12 июня 2009

В текущей версии Entity Framework единственными типами хранимых процедур, которые вы можете отобразить, являются те, которые возвращают типы сущностей. Сопоставление обычно выполняется перед компиляцией, хотя теоретически возможно генерировать метаданные Entity Framework во время выполнения.

Поэтому я вижу несколько вариантов.

  1. Откажитесь от самой идеи использования процедуры, которая не возвращает определенную схему. Вы никогда не сможете отобразить такую ​​процедуру до компиляции.
  2. Динамически генерировать EDMX во время выполнения, чтобы отобразить тип сущности в ожидаемые выходные столбцы процедуры перед ее вызовом. Обратите внимание, что текущая версия Entity Framework немного привередлива в отношении столбцов, которые возвращает процедура; вы можете найти документацию по этому вопросу в MSDN.
  3. В .NET 4.0 появились новые функции, которые позволяют вам информировать Entity Framework о вашей клиентской схеме во время выполнения без необходимости сначала генерировать EDMX . Возможно, вы сможете использовать эти функции, чтобы сопоставить некоторый тип сущности с ожидаемыми выходными столбцами процедуры.
  4. Опять же, в .NET 4.0 может быть поддержка проков, которые возвращают скалярные значения. Я не могу вспомнить, так ли это на самом деле.
  5. Вы всегда можете получить стандартное соединение с базой данных от сущностного соединения и выполнить процедуру напрямую, используя обычные SqlCommands. К сожалению, это делает ваш код базой данных поставщика, но это может быть простейшим решением вашей проблемы. Действительно, использование такой процедуры вообще уже зависит от сервера базы данных.
0 голосов
/ 27 сентября 2009

Вы можете использовать оболочку веб-службы WCF для доступа к вашему SP и использовать службу WCF в качестве источника данных. У Брэда Абрамса есть способ сделать это в своей серии статей о RIA Services

...