数据库不是从模型生成的

时间:2013-06-09 12:45:00

标签: c# entity-framework entity-framework-5

我正在尝试从模型生成数据库。我相信我已经设置了我可以在其他问题/ 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'条目。

1 个答案:

答案 0 :(得分:2)

我会开始考虑一些事情,权限是一个。确保委派调用者实际上可以在此数据库上创建。还要验证EF在调试期间访问数据库: base("name=DatabaseContext")。如果您可以访问数据库,IntelliTrace将为您提供正在创建的输出语句。

另外,我会验证迁移是否已启用。使用Nuget Package Manager控制台运行,启用 - 迁移。完整教程为Building an Initial Model & Database