【问题标题】:Compare and sync two database contextes in Entity Framework在实体框架中比较和同步两个数据库上下文
【发布时间】:2022-01-01 12:01:15
【问题描述】:

我在不同的数据库上下文中有两个表 TableATableB

架构会是这样的

表A(dbContextA)

Id   Name   Age   Town

表B (dbContextB)

Id   Name   Age   JobTitle

每个表都包含大量信息,例如大约 10 万行。

我要做的是使用NameAge 列比较这两个表,并进行同步。

目前我所做的是使用toListAsync() 为两个表检索数据,

var tableAData = await dbContextA.TableA.ToListAsync();
var tableBData = await dbContextB.TableB.ToListAsync();

并像使用Where 子句一样编写自定义逻辑。

但问题在于性能,我们不能同时使用两个不同的数据库上下文编写查询。

正如我所提到的,每个表都有大量数据并且还在增长。
如何以更好的方式比较这两个表并进行更好的优化?

【问题讨论】:

    标签: c# entity-framework synchronization dbcontext


    【解决方案1】:

    如何以更好的方式比较这两个表并进行更好的优化?

    首先考虑 EF 是否适合这项工作。 RDBMS 可能具有本机复制功能,或者您可以使用一些 ETL 工具来执行同步。

    话虽如此,鉴于使用 EF 和客户端逻辑永远不会像直接在数据库上执行此操作一样快,因此有很多方法可以在客户端上进行优化。

    LINQ 没有优化器,因此如果您想实现 Hash Join 或 Merge Join,您必须自己编写代码。您可能希望关闭 DbContext 更改跟踪并自己处理。如果您的表非常大,您可能必须避免将所有内容加载到内存中并在两个有序查询之间进行流式合并连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      相关资源
      最近更新 更多