2009-02-23 68 views
0

我有一个ASP.NET Web应用程序,其中包含用于实施其自己的数据库模式的代码;此代码在应用程序启动时运行。从命令行运行网络应用代码?

我最近开始使用LINQ to SQL,并且我已经添加了一个预生成事件来在我的数据库上运行SqlMetal,以便获取表示我的数据库表的对象。

真的很酷的是,如果我可以在预生成事件中强制执行数据库模式,然后运行SqlMetal。事实上,如果模式发生变化(例如,我向表中添加一个字段),我必须(a)构建并运行一次网站,以便应用程序启动并执行模式,然后(b)再次构建它让SqlMetal运行。

所以:从命令行运行我的web应用程序中的代码有哪些选择?

回答

1

这就是我们所做的。

我们有一个本地一键式构建需要在签入之前运行(集成构建也在每个检入中的独立环境中运行)。

的NANT脚本:

  1. 重建使用从头数据库Tarantino(数据库变更管理)
    • 清洁&编译
    • 复制的DLL到一个单独的目录
    • 运行单元测试针对DLL

我们有一个单独的SQL Metal脚本,但你的问题是让我看看在第1步和第2步之间插入呼叫。这样你的数据库更改和linq生成的文件总是同步。

0

您可以编写一个使用CodeDOM解释存储库中文件的小程序,也可以直接在预生成事件中调用编译器可执行文件。

使用CodeDOM可以避免必须知道编译器可执行文件在哪里的问题,但是如果您的代码不能在没有任何依赖关系的情况下包含在一个文件中,那么它不可用并且调用编译器,那么执行结果是更好的选择。