ASP.NET Web API - App.config не работает? - PullRequest
0 голосов
/ 21 мая 2018

У меня есть простое веб-приложение для самостоятельного размещения.Я установил EnityFramework6 пакет и добавил следующие строки в App.config в разделе :

<contexts>
    <context type="simple_api.MyContext, simple_api">
        <databaseInitializer type="simple_api.MyInitializer, simple_api" />
    </context>
</contexts>

Класс инициализатора похож на следующий:

public class MyInitializer : System.Data.Entity.DropCreateDatabaseIfModelChanges<Context>
{
    protected override void Seed(Context context)
    {
        Console.log("My seed method");
        var persons = new List<Person> { };
        var john = new Person() { Firstname = "John", Lastname = "Doe" };
        context.Persons.Add(john);
        context.SaveChanges();
    }
}

Я включил и создал миграцию, но проблема в том, что при ее запуске не запускается мой Seed метод:

PM> Update-Database
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [201805210804206_initial].
Applying explicit migration: 201805210804206_initial.
Running Seed method.

Я также пытался изменить App.config , но, похоже, полностью игнорируется, поскольку <context type="foobar, nomatterwhatishere"> не вызывает ни предупреждений, ни ошибок.

В чем может быть проблема?

-

Кстати, когда я настроил log4net , файл также был проигнорирован, и я должен позвонить log4net.Config.XmlConfigurator.Configure().Может быть, есть такая же вещь для EntityFramework?

1 Ответ

0 голосов
/ 21 мая 2018

Я был не прав: файл конфигурации работает, но Seed метод для DropCreateDatabaseIfModelChanges не запускается.Я заменил его на DropCreateDatabaseAlways и после запроса модели выдало исключение:

Failed to set database initializer of type 'simple_api.MyInitializer, simple_api' for DbContext type 'simple_api.MyContext, simple_api' specified in the application configuration. See inner exception for details.

После некоторой отладки я выяснил, что пространство имен simple_api, но имя сборкиэто simple-api, поэтому конфигурация должна быть следующей:

...
<entityframework>
    <contexts>
        <context type="simple_api.MyContext, simple-api">
            <databaseInitializer type="simple_api.MyInitializer, simple-api" />
        </context>
    </contexts>
    ...
</entityframework>
...

Теперь все работает, но я не уверен, почему Seed не был вызван для DropCreateDatabaseIfModelChanges .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...