我在存储过程和EDMX方面遇到了无数问题。我创建了一个过程,从数据库中更新了模型,并且一切正常。然后我删除了一个列并在存储过程中添加了一个新列。我更新了模型,但EDMX似乎没有刷新proc定义。
我删除了proc,并进行了更新,但手动必须删除对proc的所有引用。我最后只是重命名proc并通过模型更新从数据库导入。
我遇到了同样的问题。添加了新列,并重命名了现有列。我通过数据库中的更新模型刷新了EDMX,但EDMX没有变化,显然在运行时,它失败了。如何使用Entity Framework完成存储过程更新?
我删除了proc,重新生成了模型,删除了proc的'cs'文件,编译后再将程序添加到数据库中,重新生成模型,然后爆炸!它添加了相同的模型3次,只有最后一个是正确的。为什么它会继续带回旧版本?
答案 0 :(得分:131)
(此解决方案适用于EF 6.我没有在其他EF版本中尝试过。它运行良好。)
转到模型浏览器。 MyStoreProc是存储过程的名称(作为示例)。 MyStoreProc将出现在3个地方。
从模型中删除所有三个。 保存edmx(通过单击窗口然后按Ctrl + S)。然后右键单击并单击从数据库更新模型。然后添加更新的存储过程并再次保存。
解决没有任何麻烦:)
答案 1 :(得分:16)
刷新edmx文件中的现有存储过程
答案 2 :(得分:7)
我能找到的唯一解决办法是关闭EDMX,并手动编辑XML,即使从数据库中删除存储的proc,并从数据库更新模型 - 仍然提到了proc。从XML中删除行已解决了这个问题。
答案 3 :(得分:0)
首先,通过“从数据库更新模型”来刷新您的SP,如果它正常工作,那么好,如果没有并抛出相同的异常,请按照下面给出的步骤操作。 1.双击.edmx文件。 2.在模型浏览器中,从复杂类型,函数导入和存储过程/函数中删除SP。 3.全部保存。 4.通过“从数据库更新模型”再次添加您的SP。 5.全部保存。
答案 4 :(得分:0)
请按照以下步骤操作:
第1步:打开Edmx
第2步:打开模型浏览器
第3步:打开复杂类型并删除您的procedure_Result
第4步:打开函数导入并删除您的procedure
第5步打开StoredProcedur和Functions并删除您的procedure
第6步:保存Edmx (Ctrl+S), Clean Solution , Update Model From Database
,然后选择您要更新的procedure
,最后选择clean, build
解决方案。
完成!
答案 5 :(得分:0)