我一直在玩SubSonic的SimpleRepository,它真棒。但是,我想知道是否有一种简单的方法可以将挂起的更改应用到生产系统。
以前,我通过批处理文件使用了SubSonic 2的“迁移”;当我准备好转向生产时,我只是针对生产服务器运行所有挂起的迁移,我准备好了。好又简单。
SimpleRepostitory采用更多“在需要时运行它们”的方法进行迁移,但我不想在生产时保留该选项。
有没有办法获得待定更改列表?我知道我可以使用类似SqlDiff的东西,但由于之前我有一个可行的解决方案,丢失它会很遗憾......
任何?
答案 0 :(得分:0)
如果使用reflector,您可以轻松找到SimpleRepository如何管理迁移。
我实际上没有尝试过这段代码,但你可以像SimpleRepository那样简单地进行迁移:
以下是Reflector中的方法:(关于MigrateFromModel如何确定需要更改的内容的逻辑留给读者的练习:))
private void Migrate<T>() where T: class, new()
{
Type item = typeof(T);
if (!this.migrated.Contains(item))
{
BatchQuery query = new BatchQuery(this._provider);
Migrator migrator = new Migrator(Assembly.GetExecutingAssembly());
foreach (string str in migrator.MigrateFromModel(item, this._provider))
{
query.QueueForTransaction(new QueryCommand(str, this._provider));
}
query.ExecuteTransaction();
this.migrated.Add(item);
}
}
答案 1 :(得分:0)
您是否有机会打包并将其分享回项目? :)
我一直在使用更多“穷人”的迁移解决方案,但它没有回滚或其他功能。