C# 如何跨多个应用程序获取多个上下文,以便在一个数据库中很好地协同工作

C# 如何跨多个应用程序获取多个上下文,以便在一个数据库中很好地协同工作,c#,.net,entity-framework,C#,.net,Entity Framework,我有两份申请。这两个应用程序都引用一个数据库。两者都首先使用EntityFramework6.1代码,并启用了迁移 一个应用程序依赖于两个表。当这个应用程序运行时,如果表在数据库中不存在,它会正常地构建表,一切正常 第二个应用程序依赖于与第一个应用程序相同的两个表以及第三个表。当这个应用程序独立安装并且表不存在时,它会根据需要创建三个表,一切正常 当我尝试安装这两个应用程序时,会出现问题。要运行的第一个应用程序是正常的,但是第二个应用程序在尝试创建已经存在的表时会抱怨,因为它们是由第一个应用程序

我有两份申请。这两个应用程序都引用一个数据库。两者都首先使用EntityFramework6.1代码,并启用了迁移

一个应用程序依赖于两个表。当这个应用程序运行时,如果表在数据库中不存在,它会正常地构建表,一切正常

第二个应用程序依赖于与第一个应用程序相同的两个表以及第三个表。当这个应用程序独立安装并且表不存在时,它会根据需要创建三个表,一切正常

当我尝试安装这两个应用程序时,会出现问题。要运行的第一个应用程序是正常的,但是第二个应用程序在尝试创建已经存在的表时会抱怨,因为它们是由第一个应用程序创建的


如果实体框架已经存在并且满足配置中定义的模型,我需要寻找什么来告诉实体框架不要尝试创建表,否则就编写差异脚本并安装它们?我试图用谷歌搜索到这个问题,但我不知道用谷歌搜索什么才能找到答案。

这只是一个理论,但试试看

  • 在项目1中,创建一个迁移,并在其中放置两个应用程序使用的所有内容

  • 创建第二次迁移,并将内容放在只有第一个项目才会使用的位置

  • 运行更新数据库

  • 在项目2中,创建一个迁移,并在其中放置两个应用程序使用的所有内容

  • 将该类重命名为与第一个项目中的名称相同的名称,例如6565_Init.cs

  • 创建第二次迁移,并将内容放在只有第二个项目才会使用的位置

  • 运行更新数据库


  • 就像我说的,这只是一个理论。

    当我从Package Manager控制台手动运行Update Database时,这就可以正常工作了。启用自动迁移似乎不起作用。在运行应用程序安装程序时,如何让它运行更新数据库?显然,您可以使用:Database.SetInitializer(new MigrateDatabaseToLatestVersion());将它添加到我的存储库构造函数中就成功了。非常感谢。没问题,很乐意帮忙。