我正在尝试从模型生成数据库。我相信我已经设置了我可以在其他问题/ walktrough中找到的所有东西,但我的数据库似乎没有生成。
上下文:
public class DatabaseContext : DbContext {
public DatabaseContext()
: base("Name=DatabaseContext") {
}
public DbSet<Show> Shows { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Configurations.Add(new ShowMap());
}
}
映射:
public class ShowMap : EntityTypeConfiguration<Show> {
public ShowMap() {
ToTable("Shows");
// Key
// Properties
}
}
初始化器:
public class DatabaseInitializer : DropCreateDatabaseAlways<DatabaseContext> {
private List<Show> _shows = new List<Show>();
protected override void Seed(DatabaseContext context) {
LoadShows();
_shows.ForEach(s => context.Shows.Add(s));
}
private void LoadShows() {
// Creating models
}
}
的Global.asax:
Database.SetInitializer(new DatabaseInitializer());
的Web.config:
<add name="DatabaseContext" connectionString="Data Source=JEROEN-DESKTOP\SQLEXPRESS;Initial Catalog=NoName;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
我在没有添加表的情况下手动创建了模式'NoName'。执行我的程序没有问题,但没有生成表。当我查看VS SQL服务器对象资源管理器中的连接时,我可以看到localdb和SQLEXPRESS都不包含任何相关表。
另外需要注意的是:我已经使用nuget将EntityFramework添加到我的项目中,但是当我右键单击任何文件/文件夹时,我在上下文菜单中看不到EntityFramework。这可能是问题吗?我删除并添加了EF到项目,但它仍然没有出现。虽然我的References文件夹中有一个'EntityFramework'条目。
答案 0 :(得分:2)
我会开始考虑一些事情,权限是一个。确保委派调用者实际上可以在此数据库上创建。还要验证EF在调试期间访问数据库: base("name=DatabaseContext")
。如果您可以访问数据库,IntelliTrace将为您提供正在创建的输出语句。
另外,我会验证迁移是否已启用。使用Nuget Package Manager控制台运行,启用 - 迁移。完整教程为Building an Initial Model & Database