12

我正在使用 EF 4.3(测试版)进行测试

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

从一个旧项目中,我的架构中有一些旧表,我想通过 EF 访问它们。所有类都被声明。为了访问旧表,有一个被映射的 poco。

db 迁移也尝试创建那个旧表。

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

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

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

我喜欢使用自动迁移。我尽量避免将旧的数据库表完全迁移到 EF 类。(是的,我知道有生成器)有 120 个表,它们仍然被旧应用程序使用。

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

4

2 回答 2

30

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

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

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

Add-Migration InitialMigration –IgnoreChanges
于 2012-03-08T19:03:48.727 回答
2

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

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

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

于 2012-01-26T12:10:40.800 回答