Используйте 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!
Как решить эту проблему?