0

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

我最近开始使用 LINQ to SQL,并添加了一个预构建事件来在我的数据库上运行 SqlMetal,以便我获得代表我的数据库表的对象。

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

那么:从命令行运行 Web 应用程序中的代码有哪些选择?

4

2 回答 2

1

这就是我们所做的。

我们有一个本地一键式构建,需要在签入前运行(集成构建也在每次签入时在单独的环境中运行......)。

NANT 脚本将:

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

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

于 2009-02-23T04:31:34.543 回答
0

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

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

于 2009-02-23T04:38:07.727 回答