如何在EF 4.3迁移中忽略表/类

本文关键字:迁移 EF | 更新日期: 2023-09-27 18:21:24

我正在测试EF 4.3(测试版)

我有一些新的类,它们应该生成数据库表和列。

在一个旧项目中,我的模式中有一些旧表,我想通过EF访问这些表。所有类都已声明。为了访问旧表,有一个映射的poco。

数据库迁移也试图创建那个旧表。

它如何设置这个类/表不是迁移的一部分,而是ef模型的一部分?

xxx.OnModelCreating()    
{
    modelBuilder.Ignore<myOldTableClass>();    
}

从模型中删除整个类。最后,我不能使用它通过dbContext进行访问。

我喜欢使用自动迁移。我尽量避免将旧的db表完全迁移到EF类。(是的,我知道有发电机)有120个表,这些表仍然被旧的应用程序使用。

一些仅与EF(新应用程序)一起使用的新表。有3个常用的表格。这些不应该创建,而是通过ef访问。

如何在EF 4.3迁移中忽略表/类

随着EF 4.3.1的发布,内置了对该场景的支持。添加映射到数据库中现有表的类时,请使用-IgnoreChanges开关切换到Add-Migration

这将生成一个空的迁移,带有一个更新的元数据签名,其中包含新添加的类。

通常这是在开始使用EF迁移时完成的,因此"InitialMigration"的名称为:

Add-Migration InitialMigration –IgnoreChanges

在这种情况下,正确的工作流程是在添加更改(新类)之前创建第一个迁移,而不是添加新类,然后创建只有新表的新迁移。

如果到目前为止还没有使用迁移,那么框架将为项目中的所有表生成迁移,因为它认为您正在创建初始迁移。生成迁移后,可以修改其源文件,并从Up方法中删除旧类的CreateTable代码问题是,在以后的任何迁移中,您都可能不得不这样做

编辑:我用EF 4.3.1 编写了一个向现有项目添加迁移的演练