EF模型优先存储过程

时间:2011-07-08 10:03:46

标签: .net entity-framework stored-procedures ef-model-first

我正在使用EF 4和模型优先...我从模型中生成数据库。 如何在该场景中使用存储过程?它们也应该用数据库自​​动生成..?

2 个答案:

答案 0 :(得分:4)

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

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

编辑:

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

答案 1 :(得分:1)

拉迪斯拉夫是正确的,除了我找到了可能的解决方法。我已经测试了这个并且它可以工作,虽然无法判断它是否有副作用。

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

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

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

    希望你喜欢这个。 3.