标签: fluent-migrator

使用fluentmigrator更新每行新值的行数据

我正在使用fluentmigrator向表中添加新列.然后,我想要使用该列的唯一值更新表中的每一行.

目前我使用时:

Update.Table("Foo").InSchema("dbo").Set(new { Bar = Bar.Generate() }).AllRows();
Run Code Online (Sandbox Code Playgroud)

它为所有行提供相同的值.

我如何确保它为每一行调用该方法?

c# fluent-migrator

6
推荐指数
1
解决办法
9610
查看次数

fluentmigrator是否适用于SQL Server 2012?

fluentmigrator的当前迭代是否适用于SQL Server 2012?它未列在受支持的数据库下.

fluent-migrator sql-server-2012

6
推荐指数
1
解决办法
450
查看次数

我可以使用扩展方法使用Fluent Migrator添加列和外键约束吗?

我有一个由几个表使用的扩展方法:

public static ICreateTableColumnOptionOrWithColumnSyntax WithUser(this ICreateTableWithColumnSyntax tableWithColumnSyntax)
{
    return tableWithColumnSyntax
        .WithColumn("UserId")
            .AsInt32()
            .Nullable();
}
Run Code Online (Sandbox Code Playgroud)

这是一个使用它的示例表:

Create.Table("UserSettings")
    .WithUser()
    .WithColumn("SomeValue")
        .AsString(1)
        .Nullable();
Run Code Online (Sandbox Code Playgroud)

然后我必须每次手动添加一个外键,如下所示:

Create.ForeignKey()
    .FromTable("UserSettings")
       .ForeignColumn("UserID")
   .ToTable("Users")
       .PrimaryColumn("Id");
Run Code Online (Sandbox Code Playgroud)

有没有办法在扩展方法中打包外键声明,WithUser()以便我(更重要的是,我的团队中的其他人)不必每次都指定它?

c# fluent-migrator

6
推荐指数
1
解决办法
1875
查看次数

如何在fluent-migrator中重命名表的主键?

我需要通过fluent-migrator重命名现有表的主键,以便automapper可以自动检测列.

对于大多数列,只需FluentMigrator删除该列的任何外键约束,1)删除该列的索引2)并重命名该列.我历史上这样做是通过:

Delete.ForeignKey("foreignkeyconstraint").OnTable("mytable");
Delete.Index("UserId").OnTable("mytable");
Rename.Column("UserId").OnTable("mytable").To("UserInfo_id");
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不适用于主键,因为我无法删除该列上自动创建的索引.使用fluent-migrator重命名主键列的正确方法是什么?

c# mysql fluent-migrator

6
推荐指数
2
解决办法
3988
查看次数

如何对我的FluentMigrator迁移进行单元测试?

一般的建议是我应该总是测试我的数据库迁移,但是如何做到这似乎是一个保密的秘密;)

我选择的框架是FluentMigration.

我想我想做的是:

  1. 将数据库迁移到N-1.
  2. 保存一些数据.
  3. 将数据库迁移到N.
  4. 读取数据并确认它没有丢失.
  5. 验证其他相关更改

但我无法弄清楚如何从我的单元测试中运行迁移.

unit-testing fluent-migrator

5
推荐指数
1
解决办法
1249
查看次数

在同一数据库上使用多个 FluentMigrator 程序集

假设我在同一个数据库中有两个独立的表,表 Book 和 Cup。我只用主键 (int) 创建,称为 Id。然后,为了保持整洁,我将它们分成不同的项目并为两者创建 FluentMigrations,它们将驻留在Book.Migrations.dll和 中Cup.Migrations.dll

现在我意识到也许我的书应该可以有一个名字,并创建一个新的迁移来添加一个名为 name 的列。我将此版本设置为 201408111220(因此是撰写本文时的时间戳),并将其称为 AddNameToBook。我应用此迁移并相应地更新数据库。

然后我意识到也许杯子应该有颜色。所以我在另一个项目中创建了一个新的迁移,版本为 201408111221,并将其命名为 AddColorToCup。我再次运行迁移,并更新数据库。

据我所知,到目前为止一切正常。我不确定的是,如果我现在向 Book 添加另一个迁移,例如 201408111224,应用它,然后尝试回滚。由于现在201408111221来自另一个程序集的版本存在于 VersionInfo 表中,FluentMigrator 将如何处理这个?它会在我面前抛出错误,还是因为当前程序集对它一无所知而只是忽略该行?

也欢迎其他关于以这种方式使用 FluentMigrator 的评论(一个数据库有多个程序集)。

c# database-versioning fluent-migrator

5
推荐指数
1
解决办法
2470
查看次数

表重命名后的外键约束

我正在使用 FluentMigrator 在 SQL Server 2014 数据库上进行数据库迁移。如果我使用重命名构建器来重命名表,如下所示:

Rename.Table("Old Name").To("NewName");
Run Code Online (Sandbox Code Playgroud)

然后我是否需要删除并重新创建引用表旧名称的任何外键,或者 SQL(或 FM)是否知道更新引用?

sql-server fluent-migrator sql-server-2014

5
推荐指数
1
解决办法
5242
查看次数

FluentMigrator 命令返回未找到迁移

我创建了一个新的公共类 M203_InsertPercent ,它将根据 SQL 语句将数据插入数据库。当我使用连接字符串运行 Migrate.exe 时,程序集 FluentMigrator.Console 返回“未找到迁移”。我查看版本表中的数据库,但我的类名不在该表中。我有什么遗漏的吗?

.net c# fluent-migrator

5
推荐指数
2
解决办法
2992
查看次数

如何使用 FluentMigrator 创建一对一的外键

我使用此代码来创建外键:

Create.ForeignKey("FK_Table1_Table2")
    .FromTable("Table1").ForeignColumn("Table1_ID")
    .ToTable("Table2").PrimaryColumn("Table2_ID");
Run Code Online (Sandbox Code Playgroud)

结果我有一对多的关系:

public class Table1
{
    public int Table1_ID { get; set; }
    public virtual Table2 Table2 { get; set; }
}


public class Table2
{
    public Table2()
    {
        this.Tables1 = new HashSet<Table1>();
    }
    public int Table2_ID { get; set; }
    public virtual ICollection<Table1> Tables1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但我想看到:

public class Table2
{
    public int Table2_ID { get; set; }
    public virtual Table1 Table1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 FluentMigrator 来做到这一点?

c# fluent-migrator db-first

5
推荐指数
1
解决办法
4203
查看次数

如何在 MySQL 中使用 Fluent Migrator 自动生成 UUID/GUID?

我正在尝试将默认值 NewGuid() 设置为 MySQL 5.7 中的 UUID/GUID 列(在 .Net Core 中使用 FluentMigrator)。

Create.Table("table")
.WithColumn("auto_guid").AsGuid().NotNullable().WithDefaultValue(SystemMethods.NewGuid)
Run Code Online (Sandbox Code Playgroud)

根据 Fluent Migrator文档,应该支持 NewGuid,但出现错误:

“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法……”

我搜索了任何类似的问题和解决方案,但找不到任何。

使用 Fluent Migrator 是否可以在 MySQL 中自动生成 UUID/GUID?

mysql uuid guid fluent-migrator asp.net-core

5
推荐指数
1
解决办法
789
查看次数