Как установить порядок фиксирования параметров в функции, импортированной из хранимой процедуры? - PullRequest
0 голосов
/ 06 июня 2011

Используйте EF 4.x. Импортированный SP из базы данных.

Предположим, что MySp имеет 3 параметра как

Create Procedure MySp
@P1 varchar,
@P2 varchar, 
@p3 int
As
Begin
......
End

Затем я импортировал этот SP как функцию в edmx из базы данных. XML для этого в edmx будет что-то вроде:

<Function Name="MySp" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  <Parameter Name="P1" Type="varchar" Mode="In" />
  <Parameter Name="P2" Type="int" Mode="In" />
  <Parameter Name="P3" Type="varchar" Mode="In" />
</Function>

Хорошо. Затем я продолжаю добавлять что-то новое в базу данных, но без изменений на MySp. Таким образом, обновление из базы данных является ежедневной работой для разработчиков.

но Однажды, когда обновите базу данных для другого изменения, что-то изменится для MySp в xml: порядок параметров изменился!

<Function Name="MySp" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
  <Parameter Name="P3" Type="varchar" Mode="In" />
  <Parameter Name="P1" Type="int" Mode="In" />
  <Parameter Name="P2" Type="varchar" Mode="In" />
</Function>

Поскольку много кода уже сделано на основе порядка параметров, например MyFunc (строка p1, строка p2, int p3), теперь сгенерированная функция становится MyFunc (int p3, строка p1, строка p2). Это катастрофа для Dev!

Как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 29 июня 2012

Это ошибка в EF, которая изменяет порядок параметров в каждой модели обновления из базы данных.То, что мы сделали, это переместили хранимые процедуры в другую модель, и она не обновилась так, как у моделей таблиц.

0 голосов
/ 07 июня 2011

Я рекомендую вам использовать Entity Developer для SQL Server . Наша модель обновления из базы данных не обновляет процедуры, если набор их параметров не изменился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...