Entity framework 如何结合代码优先和数据库优先两种方法

Entity framework 如何结合代码优先和数据库优先两种方法,entity-framework,ef-code-first,entity-framework-core,ef-database-first,Entity Framework,Ef Code First,Entity Framework Core,Ef Database First,假设我是一家公司的新开发人员。因此,该项目已有一个现有数据库。要在项目中工作,显然我需要构建现有数据库(数据库优先方法),它可以生成供我使用的模型类 因此,我开始在项目上工作,并希望向表中添加一个新列,因此我在模型类上添加一个新属性,然后我希望在数据库中应用此更改。因此,我通过添加新的迁移和更新数据库,切换回代码优先的方法 但问题是,如果我添加一个新的迁移,EF将在迁移的UP方法中包含所有数据模型类,以创建数据库中的所有对应表,因为EF认为所有模型类都是我新添加的。那么,如何只通过添加新列而不重

假设我是一家公司的新开发人员。因此,该项目已有一个现有数据库。要在项目中工作,显然我需要构建现有数据库(数据库优先方法),它可以生成供我使用的模型类

因此,我开始在项目上工作,并希望向表中添加一个新列,因此我在模型类上添加一个新属性,然后我希望在数据库中应用此更改。因此,我通过添加新的迁移和更新数据库,切换回代码优先的方法

但问题是,如果我添加一个新的迁移,EF将在迁移的UP方法中包含所有数据模型类,以创建数据库中的所有对应表,因为EF认为所有模型类都是我新添加的。那么,如何只通过添加新列而不重新创建所有其他表来更新表呢?

1)从现有数据库对模型和数据库上下文进行反向工程。请点击此链接

2) 现在您有了模型和数据库上下文。除了迁移之外,您的数据访问应该可以在新上下文中正常工作

3) 既然已经创建了数据库和表,那么就需要调整数据库,以假装当前模式是使用迁移创建的

3.1)首先创建初始迁移
添加迁移初始化创建
。它将有代码来创建当前级别的数据库

3.2)现在您必须手动创建uu MigrationHistory表,并手动将initialmigration插入表中,这样它就不会再次尝试应用它。如果您发现手动执行此操作很困难,则有一个诀窍

只需更改连接字符串中的数据库名称并执行
updatedatabase
,即可使用当前迁移创建新数据库。在新创建的数据库中,应在已应用InitialCreate迁移的情况下创建迁移历史记录表。与数据一起生成一个create脚本,并在原始数据库中执行该脚本


4) 现在,您可以对模型进行其余的更改,创建新的迁移并像往常一样应用它们。

第一个问题是您是否应该开始使用迁移。就我个人而言,我完全乐意分别修改数据库模型和类模型。