我有一个ASP.NET Web应用程序,其中包含用于强制执行自己的数据库架构的代码;此代码在应用程序启动时运行。
我最近开始使用LINQ to SQL,并且我添加了一个预构建事件来在我的数据库上运行SqlMetal,以便获得表示我的数据库表的对象。
如果我可以在预构建事件中强制执行数据库模式,然后运行SqlMetal,那真的很酷。实际上,如果架构发生了变化(例如我向表中添加了一个字段),我必须(a)构建并运行一次网站,以便应用程序启动并强制执行架构,然后(b)再次构建它以便SqlMetal运行。
那么:从命令行运行我的Web应用程序中的代码有哪些选择?
答案 0 :(得分:1)
这就是我们的工作。
我们有一个本地一键式构建,需要在签入之前运行(集成构建也在每次签入时在单独的环境中运行......)。
NANT脚本将:
我们有一个单独的SQL Metal脚本,但是你的问题是让我看看在步骤1和2之间插入调用。这样你的数据库更改和linq生成的文件总是同步。
答案 1 :(得分:0)
您可以编写一个使用CodeDOM来解释存储库中文件的小程序,也可以直接在预构建事件中调用编译器可执行文件。
使用CodeDOM避免了必须知道编译器可执行文件的位置的任何问题,但如果您的代码不能包含在一个文件中而没有任何依赖性它无法使用并调用编译器,那么执行结果是一个更好的选择。