我在 Code First 模式下使用实体框架并启用自动迁移。现在,我有它的表应该一个实体不能由EF管理(迁移)。有没有办法禁用一个特定实体(即表)的自动迁移?
Fer*_*ndr 44
在 EFCore 5.0 中对我有用的另一个选项是使用SetIsTableExcludedFromMigrations:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MyEntity>().Metadata.SetIsTableExcludedFromMigrations(true);
}
Run Code Online (Sandbox Code Playgroud)
Tob*_*s J 13
现在可以在 EF Core 5.0 中使用该ExcludeFromMigrations()方法,但奇怪的是,您必须调用该ToTable()方法,然后使用TableBuilder.
public class ReportingContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable(nameof(Users), t => t.ExcludeFromMigrations());
}
}
Run Code Online (Sandbox Code Playgroud)
我的临时解决方案,仅适用于开发环境。我有一个单独的脚本运行迁移和程序运行不检查它们。因此,在意外情况下,我可以Ignore<ContactView>()使用此行调用和运行迁移。完成后,我删除了这一行!
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// comment out this code after migrations are done
modelBuilder.Ignore<ContactView>();
}
Run Code Online (Sandbox Code Playgroud)
可以通过使用另一个DbContext来访问有问题的表。迁移绑定到一个DbContext(请参阅是否可以对一个 DbContext 进行自动迁移,而不能对同一项目中的另一个 DbContext 进行自动迁移?)。
| 归档时间: |
|
| 查看次数: |
15521 次 |
| 最近记录: |