使用 DbUp ,是否可以用C(而不是SQL)编写过程迁移?
我意识到DbUp的基本原理是用SQL来完成所有的工作,但在某些情况下,C是更好的工具。
例如,假设您正在数据库中存储序列化的二进制blob(忽略这是否是一个好主意),并且希望更改这些blob的结构。您的应用程序代码具有反序列化/序列化这些blob的诀窍。这么做可能是 可能的 通过SQL,但通过C#执行会更简单。
有办法这样做吗(除了 IScript )? 基本上我在找一个机制
IScript
下标 似乎是最接近的东西-想知道是否有更好的东西。
下标
是-看 https://dbup.readthedocs.io/en/latest/usage/#code-based-scripts
基于代码的脚本有时迁移可能需要比现在更多的逻辑 很容易或者可以单独在SQL中执行。基于代码的脚本提供 在代码中生成SQL的工具,具有开放的数据库连接 以及提供的System.Data.IDbCommand工厂。 基于代码的迁移是一个实现IScript的类 接口。providDescript()方法在 该执行迁移了,所以之前的脚本 已经被处决。 当然,命令工厂可以不仅仅用于查询。 整个迁移本身可以用代码执行: public class Script0006UpdateInCode : IScript { public string ProvideScript(Func<IDbCommand> commandFactory) { var command = commandFactory(); command.CommandText = "CREATE TABLE [dbo].[Foo]( [Name] NVARCHAR(MAX) NOT NULL )"; command.ExecuteNonQuery(); return ""; } }
基于代码的脚本有时迁移可能需要比现在更多的逻辑 很容易或者可以单独在SQL中执行。基于代码的脚本提供 在代码中生成SQL的工具,具有开放的数据库连接 以及提供的System.Data.IDbCommand工厂。
基于代码的迁移是一个实现IScript的类 接口。providDescript()方法在 该执行迁移了,所以之前的脚本 已经被处决。
当然,命令工厂可以不仅仅用于查询。 整个迁移本身可以用代码执行:
public class Script0006UpdateInCode : IScript { public string ProvideScript(Func<IDbCommand> commandFactory) { var command = commandFactory(); command.CommandText = "CREATE TABLE [dbo].[Foo]( [Name] NVARCHAR(MAX) NOT NULL )"; command.ExecuteNonQuery(); return ""; } }