我正在使用EF 4和模型优先...我从模型中生成数据库。 如何在该场景中使用存储过程?它们也应该用数据库自动生成..?
答案 0 :(得分:4)
您没有先使用模型的存储过程,也不会生成。他们怎么可能?存储过程是在数据库中定义的逻辑,EF不知道该过程,因此无法为您创建它们。
如果要使用存储过程,请从模型创建数据库并首先交换到数据库。然后,您可以手动定义过程并将其映射到模型。一旦你这样做,你就不能再回到模型了。
编辑:
可能还有一个解决方案,但这并不好。您将使用所有存储过程维护自定义SQL脚本(无论如何都必须编写它们),并且您将修改数据库创建的工作流以在创建数据库后运行脚本。模型首先使用T4模板生成SQL和Workflow基础4来处理数据库创建的整个过程。 T4模板和工作流程都可以自定义。问题是此步骤将为您添加存储过程,但不会在EDMX中映射它们。
答案 1 :(得分:1)
拉迪斯拉夫是正确的,除了我找到了可能的解决方法。我已经测试了这个并且它可以工作,虽然无法判断它是否有副作用。
现在,您的模型和数据库已同步。诀窍在于,将来无论何时想要更新数据库或模型,只需重复步骤2,3和4.
你现在拥有两全其美!但有一个词我会确保你有最新版本的电源包(你必须从Windows控制面板卸载旧版本,然后重新下载最新版本并安装它。如果你没有更新,你有VS2010 SP1那么当您选择“生成数据库”时,power pack将不会显示必要的对话框,您可能会丢失存储过程。
希望你喜欢这个。 3.