从ASP.NET MVC内部创建存储过程

时间:2011-11-09 14:47:00

标签: asp.net-mvc-3 sql-server-2008 stored-procedures

我正在研究的ASP.NET MVC(3)应用程序的一个要求是它必须能够创建和填充所有必需的数据库表,如果它被配置为使用空数据库。

由于它是一个标准的ASP.NET MVC3应用程序,它使用标准的身份验证表(aspnet_*),以及一堆存储过程和内容。

我现在正在尝试通过迁移(通过MigratorDotNet)逐个创建表格(到目前为止只有aspnet_Users一个),希望它们不是全部需要;我需要的其他内容包括某些存储过程,如CheckSchemaVersion

如何从内部 ASP.NET MVC应用程序中创建这些内容?

我还有一个空的ASP.NET MVC数据库的SQL转储(因此它创建所有表和存储过程)以从中提取相关的SQL。作为一个超级最后的手段,如果我可以从我的应用程序内部以某种方式运行它,这可能足以作为解决方案。

如果重要,我正在使用ActiveRecord(由NHibernate支持)和SQL Server 2008 Express。

1 个答案:

答案 0 :(得分:0)

这确实是可能的。该代码在我的应用程序Syzite中可用,它是开源的(检查AdminController.createAspNetStoredProcedures())。

解决方案是:

  • 将程序存储到服务器上的文本文件中
  • 迭代所有行
  • 查找每一组CREATE PROCEDURE ... )\n作为程序生成调用
  • 创建System.Data.Linq.DataContext实例
  • 使用instance.ExecuteCommand代码致电CREATE PROCEDURE