C# 使用SQL Server在一个实体框架核心查询中使用多个大型数据库?

C# 使用SQL Server在一个实体框架核心查询中使用多个大型数据库?,c#,sql-server,orm,entity-framework-core,asp.net-core-2.2,C#,Sql Server,Orm,Entity Framework Core,Asp.net Core 2.2,我想用1或2dbcontext在一个查询中查询来自不同数据库的多个表。我一直在搜索一些信息,要让它完美运行似乎并不容易 我需要同时从3个或4个不同的数据库中查询5个或6个表 我曾尝试将dbcontext的实现用于另一个数据库,但主键有问题,如果只使用一个数据库,主键就没有 我分别尝试了2dbcontext,但出现了一个错误: 无法在单个查询执行消息中使用多个DbContext实例 我已经读到,我可以关联这两个数据库,问题是我不能这样做,因为我的企业结构,它不允许我这样做 这是在EntityF

我想用1或2
dbcontext
在一个查询中查询来自不同数据库的多个表。我一直在搜索一些信息,要让它完美运行似乎并不容易

我需要同时从3个或4个不同的数据库中查询5个或6个表

  • 我曾尝试将
    dbcontext
    的实现用于另一个数据库,但主键有问题,如果只使用一个数据库,主键就没有
  • 我分别尝试了2
    dbcontext
    ,但出现了一个错误:
无法在单个查询执行消息中使用多个DbContext实例

我已经读到,我可以关联这两个数据库,问题是我不能这样做,因为我的企业结构,它不允许我这样做

这是在EntityFrameworkCore2.2或3中,我已经试过了。我已经创建了数据库,所以我搭建了它们

我有一个例子,只有两个数据库:

var data =
   from j in jsa.TbEmp
   join i in info.TbcEmpGral on j.fiEmp equals i.fiEmp
   where i.fiEmp == 361591
   select i.FcName.ToString() + " - " + i.fiDate.ToString();
我想在一次查询中查询[一台服务器上]不同数据库中的多个表


最简单的方法是为单个数据库中的所有表创建视图或同义词。EF无法自动构建模型,但如果您手动创建模型,EF只需将SQL发送到单个数据库,就像它包含所有表一样,SQL Server将通过同义词或视图将查询重定向到适当的对象。

非常糟糕,尤其是当您有“庞大”数据库时。这将是非常缓慢和资源密集型的。我建议您研究一种方法,将所有数据复制到单个数据库中,然后进行查询。我的团队希望迁移到EFC以获得更大的代码灵活性。我们正试图看看哪个ORM更好,更适合我们的需要,因为我们使用的是预算和成本控制的大型数据库。由于将sql查询映射到对象以及在必要时嵌入sql语法的灵活性,我们进入了EFC。我无法将一个数据库的所有数据复制到另一个数据库,因为有太多的数据,而企业不允许我复制。这些数据库是在一台服务器上还是在多台服务器上?它们在一台服务器上。谢谢。我在考虑创建一个实体框架和视图的组合,因为我发现没有一种简单的方法可以只使用EFC来处理这个场景。管理这种场景的一个相当简单的方法是创建一个dev数据库,它有一个空表,其中包含所有正确的主键和外键以及相应的脚手架。然后在运行时点将DbContext连接到一个包含一些视图、同义词和表的组合的数据库。您是否建议在某个时候使用sp?对于一些特定的事情,还是根本不需要?对于EF不能有效支持的批处理过程,对于复杂的查询,使用存储过程,对于LINQ速度太慢的性能关键型查询,使用存储过程进行优化。谢谢您的建议!