2010-11-05 3 views
2

Я пытаюсь использовать migratordotnet для существующей базы данных. Моя база данных насчитывает около 100 таблиц, и я пытаюсь создать первоначальную миграцию.Migratordotnet создание начальной миграции

Я попытался с помощью

C:\migrations>Migrator.Console.exe SqlServer "Data Source=.\sqlexpress;Initial Catalog=my_database;Integrated Security = True;" MigracijeBaze.dll -dump InitialMigration.cs 

Unfortinutely, генерироваться миграция имеет каждый столбец с TYPEOF (строка). Int, DateTime, Decimal преобразуются в строку. Например, для таблицы Godine

CREATE TABLE [dbo].[Godine](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [FirmaID] [nvarchar](2) NOT NULL, 
    [Godina] [int] NOT NULL, 
    [BazaSifri] [nvarchar](50) NOT NULL, 
    [BazaPodataka] [nvarchar](50) NOT NULL, 
CONSTRAINT [PK_Godine] PRIMARY KEY CLUSTERED 
(
    [ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

генерируется миграции

Database.AddTable("Godine", 
    new Column("ID", typeof(String)), 
    new Column("FirmaID", typeof(String)), 
    new Column("Godina", typeof(String)), 
    new Column("BazaSifri", typeof(String)), 
    new Column("BazaPodataka", typeof(String)), 
); 

Я делаю что-то не так? Каковы наилучшие методы для первоначальной миграции?

ответ

2

Я нашел ответ. Я загрузил исходный код и использовал отладчик. Кажется, что опция дампа не полностью реализована.

public virtual Column[] GetColumns(string table) 
{ 
    List<Column> columns = new List<Column>(); 
    using (
     IDataReader reader = 
      ExecuteQuery(
       String.Format("select COLUMN_NAME, IS_NULLABLE from information_schema.columns where table_name = '{0}'", table))) 
    { 
     while (reader.Read()) 
     { 
      Column column = new Column(reader.GetString(0), DbType.String); 
      string nullableStr = reader.GetString(1); 
      bool isNullable = nullableStr == "YES"; 
      column.ColumnProperty |= isNullable ? ColumnProperty.Null : ColumnProperty.NotNull; 

      columns.Add(column); 
     } 
    } 

    return columns.ToArray(); 
} 

Тип базы данных жестко закодирован. Я просто позвоню sql-скрипту для моей первой миграции. Связанный с этим вопрос: on the issue tracker

Смежные вопросы