Ошибка кода первой миграции базы данных - PullRequest
0 голосов
/ 25 апреля 2018

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

В базе данных «master» отказано в разрешении CREATE DATABASE. .........

Работает локально. Моя строка подключения верна, а мои контекстные классы указывают на правильное имя строки подключения:

public class IdentityDb : IdentityDbContext<ApplicationUser>
{
    public IdentityDb()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static IdentityDb Create()
    {
        return new IdentityDb();
    }
}

public class CustomDb : DbContext
{
    public CustomDb() : base("DefaultConnection") { }
    public DbSet<Inquiry> Inquiry { get; set; }
    public DbSet<Product> Product { get; set; }
}

Строка подключения:

<add name="DefaultConnection" connectionString="server=***.db.1and1.com; initial catalog=***;uid=***;pwd=***"  providerName="System.Data.SqlClient" />

Я прочитал, что имя строки подключения должно совпадать с именем класса контекста, но, поскольку у меня есть два контекста, мне нужно общее имя (DefaultConnection), которое я указал в контекстах.

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

Любая помощь приветствуется.

* ОБНОВЛЕНИЕ *

Я попытался сбросить миграцию EF с помощью этого руководства, думая, что если миграции не синхронизированы с оперативной БД, это может привести к тому, что EF попытается воссоздать базу данных, вызывая эту проблему. Однако проблема все еще сохраняется!

Теперь я добавил эти строки в мои конструкторы контекста соответственно:

Database.SetInitializer<IdentityDb>(null);

Database.SetInitializer<CustomDb>(null);

Это остановило ошибку, но отчасти побило цель EF, потому что теперь я должен удалить ее при создании миграций и вручную записать изменения в онлайн-БД, а затем вставить обратно, чтобы сайт работал в сети.

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