Я запускаю приложение ASP.NET Webforms в Visual Studio 2015 и пытаюсь добавить свои модели в базу данных с помощью Entity Framework Code First, но файл базы данных не отображается. Я использую SQL Server Express LocalDB, который поставляется при установке VS для простоты. У меня есть следующий код, настроенный для создания и заполнения моей модели.
Модель класса "Монстр":
using System.ComponentModel.DataAnnotations;
namespace MonsterMadness.Models
{
public class Monster
{
[ScaffoldColumn(false)]
public int MonsterId { get; set; }
public string Name { get; set; }
[ScaffoldColumn(false)]
public int AttackPower { get; set; }
[ScaffoldColumn(false)]
public int Defence { get; set; }
[ScaffoldColumn(false)]
public int ChanceToHit { get; set; }
[ScaffoldColumn(false)]
public int Dodge { get; set; }
[ScaffoldColumn(false)]
public int Critical { get; set; }
}
}
Мой класс контекста БД "MonsterMadnessContext":
using System.Data.Entity;
namespace MonsterMadness.Models
{
public class MonsterMadnessContext : DbContext
{
public MonsterMadnessContext() : base("MonsterMadness")
{
}
public DbSet<Monster> Monsters
{
get; set;
}
}
}
Мой инициализатор "MonsterMadnessDatabaseInitializer":
using System.Data.Entity;
namespace MonsterMadness.Models
{
public class MonsterMadnessDatabaseInitializer : DropCreateDatabaseIfModelChanges<MonsterMadnessContext>
{
protected override void Seed(MonsterMadnessContext context)
{
GetMonsters().ForEach(monster => context.Monsters.Add(monster));
}
private static List<Monster> GetMonsters()
{
List<Monster> monsters = new List<Monster>
{
new Monster()
{
Name = "Test 1",
AttackPower = 10,
ChanceToHit = 10,
Critical = 10,
Defence = 10,
Dodge = 10
},
new Monster()
{
Name = "Test 2",
AttackPower = 20,
ChanceToHit = 20,
Critical = 20,
Defence = 20,
Dodge = 20
}
};
return monsters;
}
}
}
Мой инициализатор запускается в файле Global.ascx:
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//Initialize database
Database.SetInitializer(new MonsterMadnessDatabaseInitializer());
}
}
И, наконец, моя запись в web.config для строки подключения «MonsterMadess», которая должна указывать на LocalDB:
<connectionStrings>
<add name="MonsterMadness" connectionString="Data Source=(LocalDB)\v12.0;AttachDbFilename=|DataDirectory|\monstermadness.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Я настроил все на основе это руководство, но всякий раз, когда я запускаю приложение, я не вижу создаваемого файла mdf. Поскольку у меня запущен инициализатор, в таблице должны быть данные, и файл должен быть создан. Что мне не хватает? Спасибо за помощь.