C# 存储过程和更新EDMX

C# 存储过程和更新EDMX,c#,entity-framework,C#,Entity Framework,我在存储过程和EDMX方面遇到了无数问题。我创建了一个过程,从数据库中更新了模型,所有这些都成功了。然后,我删除了一列,并在存储过程中添加了一个新列。我更新了模型,但EDMX似乎没有刷新过程定义 我删除了proc,并进行了更新,但手动删除了对proc的所有引用。我最终只是重命名了proc并通过模型更新从数据库导入 我也有同样的问题。添加了新列,并重命名了现有列。我通过数据库中的更新模型刷新了EDMX,但对EDMX没有任何更改,显然在运行时,它失败了。实体框架应该如何更新存储过程 我删除了pro

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

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

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


我删除了proc,重新生成了模型,删除了proc的“cs”文件,进行了编译,然后再次将过程添加到数据库中,重新生成了模型,然后砰的一声!它三次添加相同的模型,只有最后一个是正确的。为什么它一直在恢复旧版本?

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

(这个解决方案是针对EF 6的。我没有在其他EF版本中尝试过。它很好用。)


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

  • 第一名-在复杂类型下->作为MyStoreProc_结果
  • 第二名-在函数导入->作为MyStoreProc下
  • 第三名-存储不足 过程/功能->作为MyStoreProc
  • 从模型中删除所有三个。 保存edmx(在窗口中单击,然后按ctrl+S)。然后单击鼠标右键,然后单击“从数据库更新模型”。然后添加更新的存储过程并再次保存


    轻松解决:)

    首先,请通过“从数据库更新模型”刷新SP,如果正常,则可以,如果不正常,则引发相同的异常,然后执行以下步骤。 1.双击.edmx文件。 2.在模型浏览器中,从复杂类型、函数导入和存储过程/函数中删除SP。 3.拯救一切。 4.通过“从数据库更新模型”再次添加SP。
    5.全部保存。

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

  • 转到“模型浏览器”>“函数导入”>查找所需的存储过程类>右键单击并单击“编辑”
  • 在“编辑函数导入”窗体的“返回集合”部分,单击“更新”按钮
  • 单击“确定”完成刷新
  • 按照以下步骤操作:

    步骤1:打开Edmx

    步骤2:打开模型浏览器

    步骤3:打开复杂类型并删除
    过程\u结果

    步骤4:打开函数导入并删除您的
    过程

    步骤5打开StoredProcess和Functions并删除您的
    过程

    步骤6:保存Edmx
    (Ctrl+S),清洁解决方案,从数据库更新模型
    ,并选择您希望更新的
    过程
    ,然后最后清洁、构建
    解决方案。 完成了

    (在Visual Studio Community 2019 v16.8.5中测试EF6)

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

  • 模型>函数导入>myProcedure
  • 存储>存储过程/函数>myProcedure
  • (如果您仍然不确定如何浏览到您的程序,请按照Ishwor Khanal帖子中的插图/图像进行操作。)

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

    单击“刷新”选项卡

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

    选择要更新的存储过程,然后单击“完成”。


    完成了!(比删除然后再次导入要轻松;-)

    这非常有用,谢谢!我必须承认,我有点困惑,因为我在edmx图中寻找它,存储过程不显示在那里-只有表和视图。好的精确解决方案这在EF 5中也很有效。这当然有效,但在刷新完成后不实际更新edmx背后的想法是什么?这没有任何意义。太好了,很有魅力!我还清除了EDMX中的对象,并通过再次导入所有内容来重建它。非常有帮助,而且节省了时间。在EF 6.1.3中,所有工作都像夏普一样。谢谢你,我也是这么做的(投我一票)。正如我之前所评论的,微软的伙计们应该通过选择要更新的存储过程/函数来公开实现这一点的功能(类似于从数据库中添加/删除DBO。有一个“刷新”选项卡,对IMO没有太大帮助)