EF模型优先和存储过程

3

我正在使用EF 4和模型优先...我从模型生成数据库。 在这种情况下,我如何使用存储过程?它们也应该随着数据库一起自动生成..?

2个回答

4
您没有使用模型优先的存储过程,因此不会生成。它们怎么可能呢?存储过程是在数据库中定义的逻辑,EF 对该过程没有任何了解,因此无法为您创建它们。
如果要使用存储过程,请从模型创建数据库并切换到数据库优先。然后,您可以手动定义过程并将其映射到模型。一旦这样做,您就无法回到模型优先。
编辑:
可能还有一种解决方案,但不太好。您将维护所有存储过程的自定义 SQL 脚本(无论如何都必须编写它们),并修改数据库创建工作流以在创建数据库后运行您的脚本。模型优先使用 T4 模板生成 SQL,并使用 Workflow Foundation 4 处理整个数据库创建过程。可以自定义 T4 模板和工作流。问题是,这一步将为您添加存储过程,但不会在 EDMX 中进行映射。

我有一个T4模板,可以从EDMX文件中生成所有必要的SPs的SQL。 - SolarX

1

Ladislav 是对的,不过我找到了一种可能的解决方法。我已经测试过,虽然不能确定是否有副作用。

  1. 下载并安装 Entity Designer Database Generation Power Pack(如果你还没有安装它的话)。
  2. 通过以下方式更新数据库以匹配最新版本的模型(如果您已经知道这些内容,则请见谅):
    A. 在设计器中右键单击,然后选择“从模型生成数据库”
    B. 在结果对话框中,从左侧选择“生成迁移 SQL 和部署”选项。(在选择此选项后,确保在顶部单击“选择工作流...”按钮)。
    C. 单击下一步,您应该看到它正在处理。
  3. 在数据库中创建您的存储过程。
  4. 从模型更新

现在,您的模型和数据库已同步。诀窍是,以后无论您想先更新数据库还是模型,只需重复步骤2、3和4即可。

你现在拥有了最好的两个世界!不过需要注意的是,确保你安装了最新版本的Power Pack(你需要从Windows控制面板中卸载旧版本,然后重新下载最新版本并安装)。如果你没有更新,而你又使用的是VS2010 SP1,则当你选择生成数据库时,Power Pack将无法显示必要的对话框,这很可能会导致你失去存储过程。
希望你喜欢这个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接