c# - 是否可以在构建时使用 Ef4 CodeFirst 生成 db sql 脚本?

标签 c# entity-framework entity-framework-4.1 database-schema

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

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

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

最佳答案

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

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

关于c# - 是否可以在构建时使用 Ef4 CodeFirst 生成 db sql 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414153/

相关文章:

asp.net-mvc - 当 "Delete"遇到数据库约束时显示数据库错误消息的最佳方法

c# - 为什么线程教程中的 MSDN 示例会崩溃?

c# - 异步方法中的 Task.Run() 导致线程池饥饿?

c# - Linq-to-Entities 查询中的动态条件

entity-framework - 找不到与概念类型对应的对象图层类型

c# - 重新加载实体和所有导航属性关联 - DbSet Entity Framework

c# - 按反射排序比按成员排序更快?

c# - 为什么 "while"在 C# 中如此流行?

c# - 通过字符串生成EF orderby表达式

entity-framework - OnDelete 也删除文件