Я использовал это многоцелевое видео для первых миграций кода 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, потому что теперь я должен удалить ее при создании миграций и вручную записать изменения в онлайн-БД, а затем вставить обратно, чтобы сайт работал в сети.