1

我正在尝试从模型生成数据库。我相信我已经设置了在其他问题/演练中可以找到的所有内容,但似乎没有生成我的数据库。

语境:

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
    }
}

全球.asax:

Database.SetInitializer(new DatabaseInitializer());

网络配置:

<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”条目。

4

1 回答 1

2

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

另外,我会验证迁移是否已启用。使用 Nuget 包管理器控制台运行 Enable-Migrations。完整教程是构建初始模型和数据库

于 2013-06-09T16:50:58.490 回答