Frage

Ich versuche, migratordotnet für bestehende Datenbank. Meine Datenbank hat rund 100 Tabellen und ich versuche anfängliche Migration zu erzeugen.

Ich habe versucht mit

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

Unfortinutely, erzeugt Migration hat jede Spalte mit typeof (string). Int, Datum- und werden Dezimal Spalten String umgewandelt. Zum Beispiel für die Tabelle 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]

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

Bin ich etwas falsch? Was sind die besten Praktiken für die ersten Migrationen?

War es hilfreich?

Lösung

Ich habe die Antwort gefunden. Ich habe Quellcode heruntergeladen und verwendet Debugger. Es scheint, dass Dump-Option ist nicht vollständig umgesetzt werden.

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

Datenbanktyp ist hart codiert. Ich werde einfach SQL-Skript für meine erste Migration nennen. Verwandtes Problem ist auf der issue tracker

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top