如何使用流畅的迁移器设置表字符集

时间:2014-09-15 16:53:29

标签: c# mysql fluent-migrator

是否可以使用流畅的迁移器设置表的字符集?

我有以下sql

CREATE TABLE IF NOT EXISTS `stackoverflow` (
 `foo` int(11) NOT NULL AUTO_INCREMENT,
 `bar` TEXT DEFAULT NULL.
 UNIQUE INDEX `foo_UNIQUE` ( `foo` ),
 PRIMARY KEY  ( `foo` )
)
ENGINE = InnoDB
CHARACTER SET = latin1
ROW_FORMAT = COMPACT;

我有以下c#代码:

    Create.Table("stackoverflow")
        .WithColumn("foo").AsInt32().NotNullable().PrimaryKey().Identity().Unique()
        .WithColumn("bar").AsCustom("TEXT");

我想指定字符集,但我没有在文档中看到任何内容。有什么想法吗?

1 个答案:

答案 0 :(得分:-2)

我不知道为什么当我最初尝试做这项工作时,我没有想到这一点。

解决方案是使用FluentMigrator执行普通的旧sql。我用这个MySql documentation来编写修订版。

[Migration(01, TransactionBehavior.Default, "Testing creating a table with charset")]
public class _0001_AddTableWithCharsetColumn : Migration
{
    public override void Down()
    {
        Delete.Table("StackOverflow");
    }

    public override void Up()
    {
        var sql = @"CREATE TABLE StackOverflow
                    (
                        foo VARCHAR(5)
                            CHARACTER SET latin1
                            COLLATE latin1_german1_ci
                    );";

        Execute.Sql(sql);
    }
}

这是我创建的项目的link,用于验证它是否会根据需要更改列的字符集。