5

在构建时,我想自动创建一个 sql 脚本来生成一个新的数据库。我打算使用这个脚本,这样我就可以创建一个可以与生产数据库进行比较的主数据库,以生成一个迁移脚本。我无法使用我的开发数据库,​​因为我已将其设置为在开发期间使用 SqlCE。

不幸的是,我似乎在 CodeFirst API 中找不到任何东西来生成 sql 脚本。我确信这是可能的,因为模型优先做到了。我看到我的 API 调用DbContext来初始化数据库,但没有任何东西可以让我自己实际初始化它的脚本。

我也想在构建时生成这个脚本。发生这种情况的最佳方法是什么?我正在考虑创建一个 T4 模板,并使用 Chirpy 让它在构建时运行它,但我想知道是否有更简单的解决方案。

4

2 回答 2

2

对于任何仍在寻找的人;

一种选择是您可以将生成的 DDL 作为字符串并将其保存到文件中;

string sqlscript = (context as IObjectContextAdapter).ObjectContext.CreateDatabaseScript();
于 2012-02-21T20:59:26.503 回答
2

不,目前不存在这种可能性。在我看来,可以通过创建自定义初始化程序来实现。初始化程序将创建数据库并使用 SQL Server 管理对象从数据库创建脚本。但它只会基于当前数据库服务器创建脚本,因此在 SqlCE 的情况下,您将获得 SqlCE 的脚本(使用的 SQL 类型存在差异)。

您方案中的正确方法是安装 SQL Server Express 版本并使用标准功能来初始化您的数据库和该实例。然后您将能够使用从数据库创建脚本或使用 Visual Studio 2010 数据库工具来创建差异。针对您的生产的脚本。

于 2011-03-24T08:13:44.740 回答