开发者

Migratordotnet creating initial migration

开发者 https://www.devze.com 2023-01-23 09:37 出处:网络
I\'m trying to use migratordotnet for existing database. My database has around 100 tables and I\'m trying to generate initial migration.

I'm trying to use migratordotnet for existing database. My database has around 100 tables and I'm trying to generate initial migration.

I've tried using

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

Unfortinutely, generated migration has every column with typeof(string). Int, DateTime, Decimal columns are converted to string. For example, for table 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] [nvarch开发者_StackOverflow中文版ar](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]

is generated migration

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)),
);

Am I doing something wrong? What are the best practices for doing initial migrations?


I have found the answer. I've downloaded source code and used debugger. It seems that dump option is not completely implemented.

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();
}

Database type is hard coded. I'll just call sql script for my first migration. Related Issue is on the issue tracker

0

精彩评论

暂无评论...
验证码 换一张
取 消