使用EF 4.x.从数据库导入SP。
假设MySp有3个参数
Create Procedure MySp
@P1 varchar,
@P2 varchar,
@p3 int
As
Begin
......
End
然后我从数据库导入此SP作为edmx中的函数。 edmx中的xml将是:
<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没有任何变化。所以从数据库更新是dev的日常工作。
但有一天,当更新数据库进行其他更改时,xml中MySp的更改:参数顺序已更改!
<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,string p1,string p2)。这对开发者来说是灾难!
如何解决此问题?
答案 0 :(得分:0)
我建议您使用Entity Developer for SQL Server。如果参数的集合未更改,我们的数据库更新模型不会刷新过程。
答案 1 :(得分:0)
这是EF的一个错误,它会更改数据库中每个更新模型的参数顺序。我们所做的是将存储过程移动到不同的模型,并且它不像我们的表模型那样更新。