我将旧网站的论坛更新为开源MVCForum。 MVCForum使用Code First Entity Framework,据我所知,它与现有数据库集成很困难(至少像我这样的初学者:/)。我从头开始简单地使用实体框架,但从未在已经设计的应用程序中完成模型。
有没有办法将Code First EF项目所需的表集成到数据库中,而不删除所有与该项目没有直接关联的表?将所有网站的表放在一个数据库而不仅仅是论坛中。桌子是理想的。
此外,有没有办法通过Entity Framework强制更新数据库?只是一个蛮力"检查这些表是否存在,如果没有创建它们。"我遇到了EF的问题,认为我的数据库有必要的表格(我认为这就是问题......)而且它没有。
道歉,如果这没有意义。我甚至不太了解EF足以正确地提出有关它的问题。
由于
答案 0 :(得分:0)
是的,如果Model中的DbSet
名称是唯一的(与DB表名相对),EF只需创建__MigrationHistory
表并添加与您的EF模型对应的新表。这是CreateDatabaseIfNotExists
初始值设定项的默认行为。
在你的情况下你不应该使用:
DropCreateDatabaseWhenModelChanges
DropCreateDatabaseAlways
因为此初始化程序将删除数据库。
逆向工程
您可以选择在DB中创建新表,然后以常用方式使用EF代码。在这种情况下,EF不会更改您的数据库。请注意,在这种情况下,您必须手动在数据库中进行所有更改。
答案 1 :(得分:0)
该项目看起来准备好迁移,所以您需要做的就是将连接字符串指向您想要的位置。首次运行时,它将创建数据库,因此您现在要创建一个基线迁移,以获取现有模式的快照:
1) add-migration Initial -IgnoreChanges // tells EF tables exist
2) update-database // Adds record to __MigrationHistory table
现在,您可以进行自己的更改,并按照常规代码的第一个工作流程进行操作:
1) Change schema
2) add-migration foo
3) update-database