C# 将新记录从一个数据库导入另一个数据库的最快方法?

C# 将新记录从一个数据库导入另一个数据库的最快方法?,c#,.net,entity-framework,entity,C#,.net,Entity Framework,Entity,使用EF,我需要从一个数据库中提取记录,进行一些初始化和映射,然后将记录插入另一个数据库。我只需要对尚未导入的记录执行此操作。我在辅助数据库上的模型如下所示: public class Loan { public int Id { get; set; } // this is the id of this loan's record from the original DB public int OriginalDbId { get; set; } // th

使用EF,我需要从一个数据库中提取记录,进行一些初始化和映射,然后将记录插入另一个数据库。我只需要对尚未导入的记录执行此操作。我在辅助数据库上的模型如下所示:

public class Loan
{
    public int Id { get; set; }

    // this is the id of this loan's record from the original DB
    public int OriginalDbId { get; set; }

    // the loan's last date of attendance
    public DateTime LDA { get; set; }

    ...
}
方法1:

我添加了一个名为ImportHistory的模型,它刚刚节省了上次导入的时间。我利用这个日期提取贷款,其中LDA大于上次进口的时间。问题在于,用户可以编辑贷款的LDA,从而导致某些贷款被遗漏和删除。例如,如果贷款是在上次导入之后创建的,但经过编辑使LDA在上次导入之前,则不会导入新贷款

方法2:

我从辅助数据库中检索到了所有原始出价。然后提取原始出价集合中不包含Id的所有记录。请注意,查询中包含了更多的选择条件

var allIds = _2ndDbLoanRepo.Query()
    .Select(m => m.OriginalDbId)
    .ToList();
var newRecords = _1stDbLoanRepo.Query()
    .Where(other criteria ...)
    .Where(m => !allIds.Contains(m.Id))
    .ToList();
当已经找到10万条以上的记录时,这种方法最终会变得缓慢。它已经抛出EntityCommandExecutionException,消息超时已过期。操作完成前的超时时间或服务器没有响应(只有10k记录)


那么,最好的方法是什么呢?

最快的方法是数据永远不会离开数据库服务器。服务器进程更新日志表,前端更新该日志表–T.S.昨天


1-可以链接服务器,并将映射保存为元数据,以供服务器进程使用


2-您是否想过以导出/导入方式进行此操作?导出到文本文件,从文本文件导入。数据库就是这样做的,为什么您的程序应该不同

最快的方法是数据永远不会离开数据库服务器。服务器进程更新日志表,前端更新该日志table@T.S.这两个数据库位于不同的服务器上。在两个数据库之间的代码中,我需要做一些初始化/附加/映射的工作。服务器可以链接,映射可以保存为元数据,供服务器进程使用。你有没有想过以导出/导入的方式来做?导出到文本文件,从文本文件导入。数据库就是这样做的,为什么你们的程序应该不同呢?我没想过要这样做。我知道这很糟糕,但EF让我无法深入研究sql或dms。导出仍然需要知道哪些记录已经导出。我也没有权限编辑原始数据库。你有什么指导我这样做的吗?原始数据库如何知道要导出哪些记录?对于链接服务器,您只需从不存在的sourceTable中选择x,从targetTable中选择1,其中targetTable.id=sourceTable.id。表使用4个零件名称。