3

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

4

2 回答 2

4

您没有任何带有模型的存储过程,并且不会生成。他们怎么可能?存储过程是在数据库中定义的逻辑,EF 不知道该过程,因此无法为您创建它们。

如果要使用存储过程,请先从模型创建数据库并交换到数据库。然后您可以手动定义程序并将它们映射到模型。一旦你这样做了,你就不能先回到模型。

编辑:

可能还有另一种解决方案,但这并不好。您将使用所有存储过程维护自定义 SQL 脚本(无论如何您都必须编写它们),并且您将修改数据库创建的工作流程以在创建数据库后运行您的脚本。模型首先使用 T4 模板生成 SQL 和 Workflow Foundation 4 来处理数据库创建的整个过程。T4 模板和工作流都可以自定义。问题是此步骤将为您添加存储过程,但不会在 EDMX 中映射它们。

于 2011-07-08T10:08:15.537 回答
1

Ladislav 是对的,只是我找到了一种可能的解决方法。我已经对此进行了测试,它可以工作,但无法判断它是否有副作用。

  1. 下载并安装 Entity Designer Database Generation Power Pack(当然如果您还没有的话)。
  2. 通过执行以下操作将数据库更新到模型的最新版本(如果您已经知道以下内容,我深表歉意,这适用于那些不知道的人):
    A. 右键单击​​设计器并选择从模型
    B 生成数据库。在在生成的对话框中,从左侧选择 Generate Migration SQL and Deploy 选项。(请务必在选择此选项后单击顶部的“选择工作流程 ....”按钮)。
    C. 单击下一步,您应该会看到它完成了它的工作。
  3. 在数据库中创建存储过程。
  4. 更新您的模型

现在,您的模型和数据库已同步。诀窍是,将来无论何时您想先更新数据库或模型,只需重复步骤 2、3 和 4。

您现在拥有两全其美!不过,我会确保您拥有最新版本的电源组(您必须从 Windows 控制面板卸载旧版本,然后重新下载最新版本并安装它。如果您不更新并且您拥有 VS2010 SP1,那么当您选择生成数据库时,power pack 将不会显示必要的对话框,您很可能会丢失存储过程。

希望你喜欢这个。3.

于 2011-08-19T01:28:55.317 回答