实体框架代码首先不要创建表

时间:2014-06-17 13:24:09

标签: entity-framework entity-framework-6

我正在使用现有数据库,并且已将其中一个表映射为实体(因为我需要映射外键)。

因此,在初始化此数据库时,我希望EF忽略此实体,因为它已经存在。

我将如何做到这一点?

2 个答案:

答案 0 :(得分:3)

您应该创建一个空迁移作为第一个带有-IgnoreChanges标志的迁移,以允许Entity Framework获取现有数据库的快照。

所以出门使用:

Add-Migration InitialMigration -IgnoreChanges

这将创建一个空白迁移,但它将更新Entity Framework元数据,允许现有表存在而不会被迁移触及。

还要提到的是,Entity Framework期望的命名约定和您的数据库架构可能有所不同。您可能需要使用Fluent API手动设置外键。

答案 1 :(得分:0)

我没有特别检查EF 6,但我认为默认的EF行为是当数据库存在时,它假定所有模型都准备就绪,因此不会创建表。如果希望初始化代码首先使用代码创建表,请使用初始化代码来准备数据。看这里:

http://www.entityframeworktutorial.net/code-first/seed-database-in-code-first.aspx