Сначала код Entity Framework — инициализатор базы данных — начальный метод

#c# #entity-framework #integration-testing

#c# #entity-framework #интеграция-тестирование

Вопрос:

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

Но проблема в том, что мой начальный метод не выполняется при создании базы данных.

Инструмент написан так, что при каждом тестировании база данных удаляется и создается заново.

Прежде всего, у меня есть контекст, в котором выполняются мои тесты:

 public class IntegrationArrangeActAssert<T> : ArrangeActAssert where T : DbContext
{
    #region Properties

    protected T context { get; set; }

    #endregion

    #region ArrangeActAssert Members

    /// <summary>
    ///     Set up the current state of the specs context.
    /// </summary>
    protected override void Arrange()
    {
        Database.SetInitializer(new DropCreateDatabaseAlways<T>());
        context.Database.Initialize(true);

        base.Arrange();
    }

    #endregion
}
 

Затем мой класс, который содержит мой модульный тест, просто наследует от этого класса.

Теперь, когда я запускаю модульный тест, начальный метод в конфигурации T не выполняется. База данных создана, миграции выполнены, но я просто не получаю никаких данных в своей базе данных.

Это довольно важная часть для запуска интеграционных тестов.

Любой, кто знает, почему начальный метод не работает?

Комментарии:

1. вы здесь что-то упускаете. Вы устанавливаете DropCreateDatabaseAlways, который является частью Entity Framework. Почему вы ожидаете, что Seed() класса DropCreateDatabaseAlways() будет заполнять какие-либо данные? Это не так. Напишите свой собственный инициализатор, наследующий от DropCreateDatabaseAlways и переопределите Seed() .

2. Спасибо. Я думал, что это что-то простое. Не понимаю, почему я сам этого не нашел.