Я пытаюсь получить код Entity Framework First, чтобы создать базу данных для меня, но, похоже, у нее возникли проблемы с созданием таблиц.
В моем Web.Config я установил строку подключения и указал на базу данных (без таблиц), которую я настроил:
<connectionStrings>
<add name="DataContext" connectionString="Server=.\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=Yes;" providerName="System.Data.SqlClient" />
</connectionStrings>
В моем классе DataConext.cs, расположенном в моем проекте «Домен», у меня есть следующее: (я использую плагин Altairis.Web.Security для помощи в членстве)
public class DataContext : DbContext
{
public DbSet<Faq> Faqs { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Maps to the expected many-to-many join table name for roles to users.
modelBuilder.Entity<User>()
.HasMany(u => u.Roles)
.WithMany(r => r.Users)
.Map(m =>
{
m.ToTable("RoleMemberships");
m.MapLeftKey("UserName");
m.MapRightKey("RoleName");
});
}
}
public class DataContextInitializer : CreateDatabaseIfNotExists<DataContext>
{
protected override void Seed(DataContext context)
{
// create roles
var roles = new List<Role>{
new Role{RoleName = "Administrator"}, // admin area: admin user
new Role{RoleName = "User"}, // admin area: normal user
new Role{RoleName = "Client"} // front end: normal user
};
roles.ForEach(r => context.Roles.Add(r));
}
}
В моем веб-проекте Global.asax.cs у меня есть:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
Database.SetInitializer(new DataContextInitializer());
}
Все компилируется и работает, но таблицы базы данных для меня никогда не создаются. Из чтения онлайн я думаю, что это может быть до Database.SetInitializer, но я не совсем уверен, к чему это должно быть приспособлено?
Любая помощь, указывающая мне правильное направление, была бы великолепна! У меня это работало на моем домашнем компьютере, но запуск этого проекта на другом ПК просто почему-то не работает - типично;)
Спасибо,
Рич