C# EntityFramework与另一个代码库冲突-迁移失败

C# EntityFramework与另一个代码库冲突-迁移失败,c#,database,entity-framework,ef-code-first,entity-framework-migrations,C#,Database,Entity Framework,Ef Code First,Entity Framework Migrations,免责声明-我是公司的新手,在之前的代码库中我没有任何发言权 我有一个有趣的问题。我们有一个非常大的基于web的应用程序,有自己的数据库库(不使用EF或Dapper或..任何东西-字面上是一个滚动您自己的代码优先框架)。这个库删除了所有不在其模型中的列,这显然是一个难题。接下来,我已指示我的团队将任何新模块拆分为他们自己的服务,无论是windows服务、web api还是其他服务。但是,由于这些模块共享的数据量很大,它们仍然使用与web应用程序相同的数据库。在某些情况下,来自新服务的模型会添加到w

免责声明-我是公司的新手,在之前的代码库中我没有任何发言权

我有一个有趣的问题。我们有一个非常大的基于web的应用程序,有自己的数据库库(不使用EF或Dapper或..任何东西-字面上是一个滚动您自己的代码优先框架)。这个库删除了所有不在其模型中的列,这显然是一个难题。接下来,我已指示我的团队将任何新模块拆分为他们自己的服务,无论是windows服务、web api还是其他服务。但是,由于这些模块共享的数据量很大,它们仍然使用与web应用程序相同的数据库。在某些情况下,来自新服务的模型会添加到web应用程序中,以便它们可以为其构建UI

这里是有趣的地方——我刚刚写了一个新的服务。首先使用EF代码,我像往常一样构建模型,并使用迁移。但是,例如在UAT中,UI已经创建了一些模型,因此我的迁移失败,因为表/列已经存在,因此它不会创建其他模型。它只是完全停止了迁移

如果EF能够检测到事物已经存在,并让它们单独存在,继续前进,那将是一件好事,但它似乎并不存在。我们已经禁用了旧库中删除列的部分,因为这导致了一个巨大的问题

所以,主要的问题是——EF能检测到已经存在的东西,然后简单地继续,或者你的方法是什么


(注意,数据库是postgresql)

始终在数据库中包含版本号。通过这种方式,在迁移过程中,您知道哪些表存在,哪些表不存在。我不确定我是否理解您的意思,我以前从未使用过。我从未有过使用同一数据库的多个解决方案现在你有了。在数据库设计中包含版本号是一种很好的做法,这样更新模式下的代码是前后兼容的。