阻止 table 为 EF6 中的特定实体生成

Prevent table generation for a specific entity in EF6

如何在数据库上下文初始化时禁用特定实体的 table 生成?

public class MyDbContext : DbContext {
    public DbSet<MyEntity> MyEntity{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Ignore<MyEntity>();
        base.OnModelCreating(modelBuilder);
    }
}

这段代码有帮助,但它完全排除了实体,我仍然需要查询它。

您可以使用 -IgnoreChanges 标志创建一个空迁移作为第一个迁移,以允许 Entity Framework 获取现有数据库的快照。例如:

Add-Migration InitialMigration -IgnoreChanges

在查看迁移时,EF 将生成的代码与您的数据库结构与之前生成的代码进行比较:实际上,它并不是每次都与原始数据库进行比较。

你应该能够绕过它想要创建一个 table 通过创建一个新的迁移,deleting/commenting 出 table 在 UP 中创建代码并 table 删除DOWN 中的代码,并应用空迁移。它在生成的代码中仍然有视图,所以它不会尝试再次添加它。

这会将您的实体映射到现有的 table 或您的案例中的视图

modelBuilder.Entity<entityname>().ToTable("Tablename");

或者像这样使用数据注释

[Table("tablename")] 
public class ClassName {
....
}