是否有可能在构建时使用Ef4 CodeFirst生成db sql脚本?

Kal*_*exx 5 c# entity-framework database-schema entity-framework-4.1

在构建时,我想自动创建一个sql脚本来生成一个新的数据库.我打算使用这个脚本,所以我可以创建一个我可以与生产数据库进行比较的主数据库,以生成一个迁移脚本.我不能使用我的开发DB,因为我在开发过程中设置了使用SqlCE.

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

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

Lad*_*nka 2

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

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