我正在使用Migrator.NET为应用程序编写数据库迁移.Marc-AndréCournoyer写道:
与应用程序中的任何代码一样,您 必须测试迁移.起起伏伏的代码.将其作为持续构建过程的一部分,并在尽可能多的不同数据库和环境中进行测试.
我怎么做?假设我有创建表的Up()方法和丢弃同一个表的Down()方法,我正在使用SQL Server.测试怎么样?我应该对系统表运行SQL查询,例如select * from sys.columns,检查表是否已创建并且它是否具有正确的结构?如果我们使用NHibernate会怎么样?
编辑 我的意思是Rails ActiveRecord迁移意义上的迁移(基于C#代码以小步骤创建,修改和拆除数据库).
编辑2 而在这里的,我了解,我们应该测试迁移.博客帖子实际上是从Migrator的wiki链接的.
我喜欢Fluent NHibernate来构建我的数据库,到目前为止还没有找到限制让我陷入困境.
但是在我当前的项目中,我希望在产品生命周期的早期阶段就可以发布到生产环境,因此随着我们的进步,期望在数据库模式中进行许多小的更改.
我想使用像migratordotnet这样的工具跟踪"迁移"中的这些DDL和DML更改.但我的问题是:是否有可能让这两个工具(或类似工具)协同工作?
根据DRY的精神,如何从Fluent Nhibernate中的映射中获取模式更改?这可能吗?
或者更好的方法是将模式生成留给像migratordotnet这样的工具,并让Fluent NHibernate只具有映射的可响应性?嗯,这看起来似乎更好地分离了工具级别的问题.
干杯!
简介: 我有这个ASP.NET Webforms站点的特殊性,它不只有1个数据库,它有很多.为什么?因为您可以即时创建站点的新"实例".每个"实例"共享相同的代码库,但拥有自己的数据库.这些所有数据库都具有相同的模式(结构),但当然是不同的数据.不要问'你为什么不把所有东西放在一个数据库中,并使用InstanceId知道哪个是"因为这是一个商业政策的事情.
由于url,应用程序知道正在请求哪个实例.有一个额外的数据库来完成这个(我知道它在设计时的连接字符串).此数据库只有2个表,并将URL与"应用程序实例"关联.然后,当然,每个"应用程序实例"都有其关联的连接字符串.
当前情况:现在没有任何东西可以帮助我们同步保存每个实例数据库(将模式更改传播到每个实例).所以我们手工完成,当然这是一团糟.
问题:我想使用rails-migration方式来处理模式更改,最好是migratordotnet,但如果更容易设置,可以使用任何其他方法.
问题是migratordotnet需要在proj.build文件中声明连接字符串,直到运行时我才知道它们.
真正有用的是在Application_Start上运行的某种方法,它将最新的迁移应用于每个数据库.
如何通过migratordotnet或任何类似的方式完成?任何其他建议都值得欢迎.
谢谢!
我正在将Migrator.NET与DB2数据库一起使用,并且我当前的迁移执行一个ALTER TABLE语句,这会导致表进入"reorg pending state".> REORG TABLE TableName在我可以对其进行任何其他操作之前,此状态需要重组表.
我尝试用它来执行
Database ["DB2"].ExecuteNonQuery("REORG TABLE MyTable");
但它失败了,因为显然该REORG命令只是服务器端,无法从客户端调用.然后我尝试创建一个调用REORG语句的存储过程,但我正在努力使用正确的语法.
任何人都可以建议解决这个问题吗?