Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-比较项目_C#_Sql Server_Database_Entity Framework_Comparison - Fatal编程技术网

C# 实体框架-比较项目

C# 实体框架-比较项目,c#,sql-server,database,entity-framework,comparison,C#,Sql Server,Database,Entity Framework,Comparison,我现在有点卡住了,需要一些关于如何继续的建议。我有以下设置: 两个数据库,一个是Ingres,另一个是MSSQL 我从Ingres数据库(这是一个混乱的数据库)中获取数据子集,将其转换成(更)规范化的形式,并将其存储在MSSQL数据库中以供进一步使用 我通过普通的DataReader从Ingres DB获取数据项,并使用实体框架将这些数据项存储在MSSQL数据库中 到目前为止,这基本上是可行的(jey!) 数据库模型(在MSSQL数据库中)由5个表组成,其中一个表是主表(文章),其他表(价格

我现在有点卡住了,需要一些关于如何继续的建议。我有以下设置:

  • 两个数据库,一个是Ingres,另一个是MSSQL
  • 我从Ingres数据库(这是一个混乱的数据库)中获取数据子集,将其转换成(更)规范化的形式,并将其存储在MSSQL数据库中以供进一步使用
  • 我通过普通的DataReader从Ingres DB获取数据项,并使用实体框架将这些数据项存储在MSSQL数据库中
  • 到目前为止,这基本上是可行的(jey!)
数据库模型(在MSSQL数据库中)由5个表组成,其中一个表是主表(文章),其他表(价格、批次等)与该表相关(主要通过作为主键的文章编号)

现在我们讨论的是35k篇文章,每篇文章都有很多批次,以此类推。当我每次更新完整的表时(基本上我所做的是截断表并重新创建整个数据集),这就成了一个问题。这需要(在速度非常慢的服务器上)大约5-10分钟(即使在对实体框架默认值进行了一些修改之后)。 因为数据集必须是一致的,所以表基本上是在该时间段内锁定的,这是不可能的

我想切换到一种持续更新方法,在这种方法中,数据的检查和修改是在后台连续执行的

基本上,我唯一能想到的是手动检查所有项目,并检查项目的任何属性是否已更改。如果有(或者是新的),我会手动修改属性


你们中有谁知道更好的处理方法吗?执行此比较的最佳方式是什么,因为我想将每个项目(及其所有依赖项)与另一个数据库中的项目进行比较。是否有一些自动方法?

如果Ingres支持触发器,则在Ingres表上放置触发器,将新值写入新表(每个原始表一个),并在更改表上放置一个标志,指示它是插入、更新还是删除。在变更表上也包括一个时间戳

然后,在适当的时间间隔(或连续),从变更表中读取每个变更,并将其应用于MSSQL表,然后删除变更行


它可能会比这复杂一点,但这项基本技术对我来说似乎是一个很好的方法。

谢谢你的否决投票,至少有一个理由是很好的…想想看,但我唯一能访问Ingres DB的是读(没有写或触发器或任何东西…),这会给你带来真正的问题,那么。鉴于安格尔已经停业多年,我假设安格尔系统的供应商不可用?客户是否有DBA可以更改数据库?或者客户完全不愿意这样做?不幸的是,目前数据库是“不要碰它,否则会死”:(.我可以理解这一点。我在90年代初使用了安格尔几年,它可以做各种各样的辅助工作,但我现在不记得细节了。也许值得拿一本手册,看看是否有什么相对不具侵扰性的东西可能会有所帮助,一个可能的论点是,如果有什么东西,它将是我的比您当前运行的完整选择更高。除此之外,我看不到您当前的完整重新创建策略的任何替代方案-除非您可以在数据到达入口之前拦截数据(可能来自网站)。抱歉:(是的,我发现最有趣的是,当有尾随空格时,你的结果可能很愚蠢。无论如何,谢谢你的输入。