如何从C#生成数据库表以便对数据库进行版本控制?

Jos*_*osh 4 .net c# database sql-server

目前,通过SQL Server Management程序对数据库进行了更改.如果表更改,则运行sqlmetal以重新生成linqtosql类并继续开发.但是,这会使部署变得困难,因为您必须通过并手动更新部署数据库(以及开发周期中使用的任何其他数据库).如果我们可以使用C#来生成这些更改将会很好,因为它有助于消除人为错误,并具有能够将数据库结构保留在git中的额外好处.现在,数据库的唯一表示形式是生成的linqtosql类.

我一直在寻找一个可以处理这类事情的好库,但主要的解决方案似乎是:保留一个sql生成脚本,或者在可以运行的C#类中嵌入sql以对数据库进行更改.这两种情况似乎都是非常不理想的情况,因为你失去了C#提供的优秀强类型.似乎应该有一种方法来使用纯C#来做到这一点.

我已经看到了使用实体框架和linqtosql从POCO生成数据库这样的事情的暗示,但我很难找到使用它的具体示例.另外,我还没有发现它们是否具有优雅(即数据保留)方式来处理初始表生成后对数据库的更改.

有没有解决这个问题的项目?

and*_*dyp 5

有几种工具可以帮助您进行数据库的模式(和数据)迁移:RikMigrations,Migrator.NetMachine.Migrations.希望有所帮助.

Wizardby看起来也很有前途:它提供了与数据库无关的DDL脚本以及不同版本的模式之间的自动迁移.