阻止 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 {
....
}
如何在数据库上下文初始化时禁用特定实体的 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 {
....
}