存储过程和更新EDMX

Cra*_*aig 57 c# entity-framework

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

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

我刚才有同样的问题.添加了新列,并重命名了现有列.我通过数据库中的更新模型刷新了EDMX,但EDMX没有变化,显然在运行时,它失败了.如何使用Entity Framework完成存储过程更新?

在此输入图像描述

我删除了proc,重新生成了模型,删除了proc的'cs'文件,编译后再将程序添加到数据库中,重新生成模型,然后爆炸!它添加了相同的模型3次,只有最后一个是正确的.为什么它会继续带回旧版本?

SAr*_*fin 151

(此解决方案适用于EF 6.我没有尝试过其他EF版本.它运行良好.)


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

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

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

解决没有任何麻烦:)

  • 这肯定有效,但是在刷新完成后没有实际更新edmx背后的想法是什么?它没有任何意义. (3认同)

Fáb*_*nto 24

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

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

在此输入图像描述

  • 是的,我也以同样的方式做(我投票)。正如我之前评论的 - 来自 Microsoft 的人员应该通过选择要更新的存储过程/函数来公开执行此操作的功能(类似于从数据库中添加/删除 dbo。有一个“刷新”选项卡,在我看来这不是很有帮助) (3认同)
  • 这应该是公认的答案。没有理由仅仅为了获取返回列中的更改而执行删除和重新添加存储过程的过程。 (2认同)

Ish*_*nal 8

按着这些次序:

第 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解决方案。完毕 !


Cra*_*aig 7

我能找到的唯一解决办法就是关闭EDMX,并手动编辑XML,即使从数据库中删除存储的proc,并从数据库中更新模型,仍然提到了proc.从XML中删除行已解决了该问题.