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

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

我有一些新的类应该生成db表和列。

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

db迁移也尝试创建旧表。

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

xxx.OnModelCreating() { modelBuilder.Ignore(); } 

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

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

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

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

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

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

 Add-Migration InitialMigration –IgnoreChanges 

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

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

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