2014-09-15 1 views
0

유창한 migrator를 사용하여 테이블의 문자 집합을 설정할 수 있습니까?유창한 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"); 

내가 문자 집합을 지정하려면,하지만 난 설명서에서 아무것도 보이지 않아요합니다. 이견있는 사람?

+0

'NVARCHAR' 컬럼을 줄'.AsString()과'.AsAnsiString()'만 사용하면'VARCHAR' 컬럼을 줄 수 있다고 생각합니다. – tobsen

+0

당신이 말하는 경우 : ".AsCustom ("TEXT ")"그건 문제가 아니에요. 나는 다음과 같은 것을 알아 내려고 노력하고있다. CHARACTER SET = latin1 – drneel

+0

오, 미안해! 어떻게해야할지 모르겠다. 바라건대 누군가가 대답을 해줄 수 있기를 바랍니다. – tobsen

답변

-1

원래이 작업을 시도 할 때 왜 생각하지 않았는지 알 수 없습니다.

해결 방법은 FluentMigrator를 사용하여 일반 old 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입니다.

관련 문제