На моей машине dev я пытаюсь воссоздать свою базу данных с помощью базы данных обновлений из консоли диспетчера пакетов. Полагаю, что я следовал инструкциям в приведенных выше сообщениях.
Я получаю это сообщение об ошибке:
Произошла ошибка активации файла. Имя физического файла '\ WRDatabase.mdf' может быть неверным. Диагностировать и корректировать дополнительные ошибки и повторить операцию. CREATE DATABASE не удалось. Некоторые файлы перечисленные имена не могут быть созданы. Проверьте связанные ошибки.
Я выполняю команду:
update-database -ConfigurationTypeName WRConfiguration -ConnectionStringName localWR -Verbose
Обратите внимание, что в приведенной выше команде я передаю имя строки подключения, и появляется строка подключения, потому что в сообщении об ошибке появляется имя файла .mdf.
Интересно, что я могу запустить свой код, и моя база данных создана, но она создана с неправильным именем (она называется "VIN.DataModel.WRContext", которая является полным пространством имен и именем класса DbContext). Я предполагаю, что когда мой код запускает EF, не удается найти строку соединения для создания базы данных. Это преднамеренно, поскольку я буду сопоставлять этот контекст с базой данных, которая выполняется на сервере, а также с копией db, которая выполняется на локальном компьютере (т.е. У меня будет две строки соединения для одного и того же DbContext).
Вот конфигурация приложения:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
<connectionStrings>
<add name="localWR" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog =WRDatabase;AttachDBFilename=|DataDirectory|\WRDatabase.mdf; Integrated Security=True;MultipleActiveResultSets=True" />
</connectionStrings>
AutomaticMigrationsEnabled устанавливается в значение false в конструкторе класса Configuration.
Вот класс контекста:
public class WRContext : DbContext
{
static WRContext()
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<WRContext, VIN.DataModel.WRMigrations.WRConfiguration>());
}
public WRContext()
{
}
public WRContext(string connectionString)
: base(connectionString)
{
}
public DbSet<Emp> Emps { get; set; }
public DbSet<Inv> Invs { get; set; }
public DbSet<WRConfig> WRConfigs { get; set; }
}