我正在使用现有数据库,并且已将其中一个表映射为实体(因为我需要映射外键)。
因此,在初始化此数据库时,我希望EF忽略此实体,因为它已经存在。
我将如何做到这一点?
答案 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