【问题标题】:How to correctly remove a stored procedure from DataEntities.edmx?如何从 DataEntities.edmx 中正确删除存储过程?
【发布时间】:2015-04-25 05:34:29
【问题描述】:

如果我在“Stored Procedures”文件夹中使用 Visual Studio Server Explorer 定义了一个存储过程 myStoredProcedure,那么我会转到 .edmx 来更新模型。

我可以在后面的代码中使用myStoredProcedure,并且可以被 IntelliSense 检测到,并且工作正常。

当我从数据库和 .edmx 模型中删除 myStoredProcedure 时。 IntelliSense 仍会检测到它。即使它在 Server Explorer -> "Stored Procedures" 文件夹和 .emdx "Stored Procedures / Functions" 文件夹中都没有踪迹。

使用时没有显示编译错误,但运行时错误(当然是预期的)。

函数 import 'DataEntities.myStoredProcedure' 无法执行,因为它没有映射到存储函数。

如果我在数据库 -> 服务器资源管理器 -> “存储过程”中再次重新定义 myStoredProcedure,并更新 .edmx 模型。 IntelliSense 检测到两个:

  • myStoredProcedure -> 这是旧的,会导致运行时错误。
  • myStoredProcedure1 -> 这是新的,工作正常。

那么如何正确地从DataEntities.edmx中删除一个存储过程呢?

【问题讨论】:

  • 您需要删除模型浏览器中的过程并重新生成代码(如果它没有自动发生)。服务器资源管理器未连接到 EF 设计器,从那里删除任何内容都不会更新您的模型(反之亦然)。
  • @Pawel 我在问题中已经说过,我从服务器资源管理器中的数据库和 .edmx 模型中删除了该过程。

标签: entity-framework stored-procedures


【解决方案1】:

模型浏览器中有三个地方需要删除对象才能完全删除存储过程。 1.存储过程/函数文件夹 2.函数导入文件夹 3. 复杂类型文件夹

【讨论】:

  • 我最初编辑了 XML,但这种 GUI 方法是完成工作的更安全的方法。
【解决方案2】:

右击 edmx--> 打开方式... --> XML(文本)编辑器 --> 查找并删除所有引用您的程序名称的相关 xml 块。

Open with XML Editor

确保找到并删除与之相关的所有内容。

Delete related xml blocks_1

Delete related xml blocks_2

如果您的程序带有后缀 _Result 也搜索没有它的所有内容并删除所有引用它的 xml 块。

然后按 Ctrl + S 保存 edmx。

现在删除 edmx 的 .tt 下以你的过程命名的 cs 相关文件

如果您现在从设计器中正常打开 .edmx,单击它并按 Ctrl+s,您可以验证该过程不再映射。如果它仍然被映射,它将被重新创建。

【讨论】:

    【解决方案3】:

    我最近在 EF 更新向导上发现了刷新和删除选项卡。 “添加”选项卡是您通常看到的,但在“刷新”和“删除”选项卡旁边。 “刷新”选项卡非常快速且易于使用。 ;)

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 2014-03-22
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多