Skip to main content
 首页 » 编程设计

entity-framework之EF 6数据库第一个: How to update stored procedures

2024年06月20日31mfrbuaa

我们正在使用Entity Framework 6.0.0并首先使用数据库(like this)从表和存储过程生成代码。这似乎很有效,只是更新或刷新模型时不会反射(reflect)存储过程中的更改。向表添加列会得到反射(reflect),但不会向存储过程添加字段。

有趣的是,如果我转到模型浏览器,右键单击存储过程,选择添加函数导入,然后单击按钮获取列信息 我们可以看到正确的列。这意味着模型知道这些列,但无法更新生成的代码。

有一种解决方法,那就是在更新模型之前删除生成的存储过程。只要您没有对存储过程进行任何编辑,此操作就有效。有谁知道避免这种解决方法的方法吗?

我使用的是 Visual Studio 2013,其中包含截至 2013 年 12 月初的所有最新更新。

提前致谢!

更新 1: andersr的回答在一种情况下有所帮助,其中存储过程使用了临时表,所以我给了他+1,但它仍然没有解决更新简单存储过程的主要问题。

更新 2: shimron 下面的评论链接到有关 EF 3.5 中相同问题的问题。 EF 6.0 似乎仍然如此。阅读它以获取替代方法,但我目前的结论是,最简单的方法是在更新模型之前删除生成的存储过程。如果您想做一些奇特的事情,请使用部分类。

请您参考如下方法:

基于this answer通过 DaveD ,这些步骤解决了该问题:

  1. .edmx 中,按住 rt 键单击并选择模型浏览器
  2. 在模型浏览器(在 VS 2015 默认配置中,它是解决方案资源管理器中的一个选项卡)中,展开模型下的函数导入
  3. 双击您的存储过程。
  4. 点击返回复杂集合旁边的更新按钮(如果不返回标量或实体)
  5. 点击确定,然后保存您的 .edmx,以反射(reflect)整个项目中存储过程的字段更改。