87

我在存储过程和 EDMX 方面遇到了无穷无尽的问题。我创建了一个过程,从数据库中更新了模型,一切正常。然后我删除了一列并在存储过程中添加了一个新列。我更新了模型,但 EDMX 似乎没有刷新 proc 定义。

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

我只是有同样的问题。添加了一个新列,并重命名了一个现有列。我通过数据库中的更新模型刷新了 EDMX,但 EDMX 没有任何更改,显然在运行时,它失败了。应该如何使用 Entity Framework 完成存储过程更新?

在此处输入图像描述

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

4

6 回答 6

218

(此解决方案适用于 EF 6。我没有在其他 EF 版本中尝试过。效果很好。)


转到模型浏览器。MyStoreProc 是存储过程的名称(例如)。MyStoreProc 将出现在 3 个地方。

  1. 第一名- 在复杂类型下-> 作为 MyStoreProc_result
  2. 第二名 - 在函数导入下 -> 作为 MyStoreProc
  3. 第三名 - 在存储过程/功能下 -> 作为 MyStoreProc

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

解决了没有任何麻烦:)

于 2015-10-01T04:21:02.503 回答
60

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

  1. 转到“模型浏览器”>“函数导入”>找到所需的存储过程类>右键单击并单击“编辑”
  2. 在“编辑函数导入”表单的“返回集合”部分中,单击“更新”按钮
  3. 单击“确定”完成刷新。

在此处输入图像描述

于 2018-05-22T14:35:12.190 回答
13

跟着这些步骤:

第 1 步:打开 Edmx

在此处输入图像描述

第 2 步:打开模型浏览器

在此处输入图像描述

第 3 步:打开复杂类型并删除您的procedure_Result

在此处输入图像描述

第 4 步:打开 Functions Imports 并删除您的procedure

在此处输入图像描述

第 5 步打开 StoredProcedur 和 Functions 并删除您的procedure

在此处输入图像描述

第 6 步:保存 Edmx(Ctrl+S), Clean Solution , Update Model From Database并选择您procedure想要更新的内容,然后选择最终clean, build解决方案。完毕 !

于 2019-01-15T02:33:26.133 回答
7

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

于 2013-08-06T20:04:22.370 回答
0

首先通过“从数据库更新模型”刷新您的 SP,如果它正常工作,很好,如果没有并抛出相同的异常,那么请按照下面给出的步骤操作。1.双击.edmx文件。2. 在模型浏览器中,从复杂类型、函数导入和存储过程/函数中删除 SP。3. 全部保存。4.通过“从数据库更新模型”再次添加您的SP。5.全部保存。

于 2017-11-14T09:41:00.460 回答
0

(在 Visual Studio Community 2019 v16.8.5 中针对 EF6 进行了测试)

转到模型浏览器并浏览到您的程序。以下两个地方之一:

  1. 模型 > 函数导入 > myProcedure
  2. 存储 > 存储过程/函数 > myProcedure

(如果您仍然不确定如何浏览您的程序,请按照 Ishwor Khanal 帖子中的插图/图片进行操作。)

右键单击您的程序,从上下文菜单中选择“从数据库更新模型...”。
上下文菜单

单击“刷新”选项卡

在此处输入图像描述

打开“存储过程和函数”,然后打开“dbo”。

选择要更新的存储过程,然后单击“完成”。 在此处输入图像描述

完毕!(比删除然后再次导入更容易;-))

于 2021-02-22T22:28:30.303 回答