Entity Framework 4.3 Миграция данных - метод единого начального числа?

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

В настоящее время в классе конфигурации есть один метод начального значения.

С одной миграцией, добавляющей столбцы, добавление данных в методе начального значения - это нормально, но с несколькими миграциями, когда каждый из них добавляет столбцы, это не будет работать, если я не обновлю метод начального значения, чтобы он соответствовал самой последней миграции.

Почему они не включили виртуальный или абстрактный Seed-метод, который люди могли бы переопределить при необходимости в классе DbMigration? Это могло бы показаться намного лучшим способом?

заранее спасибо


person Moulde    schedule 14.03.2012    source источник


Ответы (1)


Потому что вы можете засеять свои данные прямо в Up метод в своем классе миграции. Просто позвони:

Sql("INSERT INTO ... ");
Sql("UPDATE ... ");

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

person Ladislav Mrnka    schedule 14.03.2012
comment
Я не думал об этом, но мне бы очень хотелось иметь возможность использовать контекст, потому что новые значения немного сложны и основаны на данных, уже находящихся в таблице. Возможно, можно использовать класс ModelDataContext внутри up. Я надеюсь, что это сработает и не убьет маленького детеныша тюленя. - person Moulde; 14.03.2012
comment
Я не думаю, что можно использовать контекст при миграции. - person Ladislav Mrnka; 14.03.2012
comment
Не совсем тот ответ, на который я надеялся, но я думаю, это самый близкий мне ответ :) И я не знал о возможности выполнять sql из классов миграции. Спасибо - person Moulde; 16.03.2012
comment
У меня были аналогичные проблемы с желанием засеять некоторые данные во вновь созданные части базы данных, я еще не нашел строго типизированного способа сделать это, я действительно хочу избежать выполнения операторов SQL, но, похоже, пока это единственный способ. - person Jim Wolff; 30.04.2012