自动运行 ELMAH 数据库脚本
我想在我的 ASP.net MVC 3 项目上使用 ELMAH 和 sql server,以及 EF 4.3。
有没有办法让 sql 脚本自动运行来创建 elmah 表?
我猜 ef 迁移可能可以完成这项工作,但我还没有经常使用它们。
我的目标是找到一个解决方案,您可以签出该解决方案并直接运行它(本地 sqlexpress 或部署时的完整 sql 服务器)并让它正常工作,而无需手动运行各种帮助程序 sql 脚本
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
添加一个空的基于代码的迁移(当没有待处理的数据库更改时,只需键入
add-migration ElmahSetup
)。然后添加对
Sql()
的调用,以在Up()
方法中运行 elmah。要使解决方案完整,您必须向Down()
方法添加相应的 drop 语句。Add an empty code-based migration (just type
add-migration ElmahSetup
when there are no pending DB changes).Then add calls to
Sql()
to run the elmah in theUp()
method. To make the solution complete you have to add corresponding drop statements to theDown()
method.我知道这个问题是针对 EF 4.3 的,但如果您使用 EF 6.1 那么现在有一个 nuget 包可以为您初始化 Elmah 表和过程: https://www.nuget.org/packages/Elmah.SqlServer.EFInitializer/。将其添加到您的网络项目中。然后,它将首先使用 EF 代码为您创建它。它将一个初始化程序添加到您的 App_Start 文件夹中,因此您实际上不必添加任何代码。它将向您的数据库添加迁移,以确保它只添加一次。
I know this question was for EF 4.3, but if you are using EF 6.1 then there is now a nuget package that will initialize the Elmah table and procs for you: https://www.nuget.org/packages/Elmah.SqlServer.EFInitializer/. Add it to your web project. It will then use EF code first to create it for you. It adds an Initializer to your App_Start folder so you actually don't have to add any code. It will add a migration to your database to ensure it only gets added once.