EF 6数据库第一:如何更新存储过程?

Hal*_*ard 45 stored-procedures entity-framework ef-database-first entity-framework-6 visual-studio-2013

我们正在使用Entity Framework 6.0.0并首先使用数据库(像这样)从表和存储过程生成代码.这似乎很有效,除了在更新或刷新模型时不反映存储过程的更改.反映了向表中添加列,但未向存储过程添加字段.

有趣的是,如果我转到Model Browser,右键单击存储过程,选择Add Function Import并单击按钮,Get Column Information我们可以看到正确的列.这意味着模型知道列,但无法更新生成的代码.

有一种解决方法,即在更新模型之前删除生成的存储过程.只要您没有对存储过程进行任何编辑,这就可以工作.有谁知道避免这种解决方法的方法?

Visual Studio 2013截至2013年12月初,我正在使用所有最新更新.

提前致谢!

更新1: andersr的回答有助于一个案例,其中存储过程使用临时表,所以我给了他+1,但它仍然无法解决更新简单存储过程的主要问题.

更新2: shimron的评论下面链接到关于EF 3.5中相同问题的问题.对于EF 6.0来说,似乎仍然如此.阅读它是为了另一种方法,但我现在的结论是,最简单的方法是在更新模型之前删除生成的存储过程.如果你想做一些奇特的事情,可以使用部分课程.

Ric*_*k V 99

基于此答案DaveD,这些步骤解决该问题:

  1. 在您的.edmxrt-click中,选择Model Browser.
  2. 在模型浏览器中(在VS 2015默认配置中,它是解决方案资源管理器中的选项卡),展开模型下的" 函数导入 ".
  3. 双击存储过程.
  4. 单击" 返回集合 - 复杂"(如果未返回标量或实体)旁边的" 更新"按钮
  5. 点击没关系,然后保存您的.edmx来反映整个项目现场更改您的存储过程.

  • 这将更新为返回值生成的复杂类型.知道如何在更新数据库后更新模型中存储过程的参数吗? (4认同)
  • 要回答我自己的问题,请使用"从数据库更新模型..."向导刷新整个模型. (2认同)