提问者:小点点

存储过程和更新EDMX


我在存储过程和EDMX方面遇到了没完没了的问题。我创建了一个过程,从数据库中更新了模型,所有这些都工作了。然后,我删除了一列,并在存储过程中添加了一个新列。我更新了模型,但是EDMX似乎没有刷新proc定义。

我删除了proc,并进行了更新,但必须手动删除对proc的所有引用。我最终只是重命名了过程,并通过模型更新从数据库导入。

我也有同样的问题。添加了一个新列,并重命名了一个现有列。我通过从数据库更新模型刷新了EDMX,但是EDMX没有任何更改,显然在运行时,它失败了。如何使用实体框架更新存储过程?

我删除了过程,重新生成了模型,删除了过程的'cs'文件,编译,然后再次将过程添加到数据库中,重新生成了模型,然后砰!它将相同的模型添加3次,只有最后一次是正确的。为什么它不断地把旧版本带回来?


共3个答案

匿名用户

(这个解决方案是针对EF 6的,我没有在其他EF版本中尝试过,效果不错。)

转到Model Browser。MyStoreProc是存储过程的名称(例如)。MyStoreProc将出现在3个地方。

    ;作为MyStoreProc_result ;作为MyStoreProc ;作为MyStoreProc/li>

从模型中删除所有三个。保存edmx(通过在窗口中单击,然后Ctrl+S)。然后右键单击并单击“从数据库更新模型”。然后添加更新后的存储过程并再次保存。

毫无麻烦地解决了:)

匿名用户

要刷新edmx文件中的现有存储过程,

    ;“函数导入”&>;查找所需的存储过程类&>右键单击并点击“edit/li>
  1. 在“编辑函数导入”表单中,在“返回集合”部分,单击“更新”按钮/li>
  2. 单击“确定”完成刷新。/li>

匿名用户

我能找到的唯一解决办法是关闭EDMX,并手动编辑XML,即使在从数据库中删除存储的过程并从数据库中更新模型之后,XML仍然提到了过程。从XML中删除这些行已经解决了这个问题。