FluentMigrator - 检查 data/row 是否存在
FluentMigrator - Check if data/row exists
我正在使用 FluentMigrator 将一个数据库架构迁移到另一个数据库架构。我有一个案例,我想在添加新数据之前检查某些数据(特别是一行)是否存在。
if (!Schema.Table("MyTable").Something().Exists)
Insert.IntoTable("MyTable").Row(new { Id = 100, Field="Value" });
如何先检查该行是否存在?
从 3.0 版开始,FluentMigrator 中没有内置功能可以插入不存在的行。 GitHub 上有一个添加此功能的请求:https://github.com/fluentmigrator/fluentmigrator/issues/640。
但是,您可以使用 Execute.Sql()
方法并编写自己的 SQL 查询,在插入之前检查该行是否存在,如此处所示 Check if a row exists, otherwise insert。
Execute.Sql(@"
begin tran
if not exists (select * from MyTable with (updlock, rowlock, holdlock) where id='100' and Field='Value')
begin
insert into MyTable values (100, 'Value')
end
commit
");
我正在使用 FluentMigrator 将一个数据库架构迁移到另一个数据库架构。我有一个案例,我想在添加新数据之前检查某些数据(特别是一行)是否存在。
if (!Schema.Table("MyTable").Something().Exists)
Insert.IntoTable("MyTable").Row(new { Id = 100, Field="Value" });
如何先检查该行是否存在?
从 3.0 版开始,FluentMigrator 中没有内置功能可以插入不存在的行。 GitHub 上有一个添加此功能的请求:https://github.com/fluentmigrator/fluentmigrator/issues/640。
但是,您可以使用 Execute.Sql()
方法并编写自己的 SQL 查询,在插入之前检查该行是否存在,如此处所示 Check if a row exists, otherwise insert。
Execute.Sql(@"
begin tran
if not exists (select * from MyTable with (updlock, rowlock, holdlock) where id='100' and Field='Value')
begin
insert into MyTable values (100, 'Value')
end
commit
");