C# 使用C和Ado.net比较数据库(仅表)

C# 使用C和Ado.net比较数据库(仅表),c#,sql-server,entity-framework,ado.net,C#,Sql Server,Entity Framework,Ado.net,我正在尝试开发一个软件,它以两个数据库作为输入,比较这些表并显示表之间的差异 这就是我的想法和发展 1选择计算机上安装的所有服务器。 2根据所选服务器,它列出所有已安装的数据库。 3根据数据库的不同,此方法返回数据库中的所有表名。 4现在我有了关于两个数据库的信息以及两个数据库中所有表的名称。我将这两个数据库填充到两个数据集对象源和目标中。 5现在,我正在迭代这两个数据集,比较对应于索引的每个表。以及记录两个数据表不相同的索引 我的问题是- 1以两个数据库作为输入。 2在GUI中显示表数据的差异

我正在尝试开发一个软件,它以两个数据库作为输入,比较这些表并显示表之间的差异

这就是我的想法和发展

1选择计算机上安装的所有服务器。 2根据所选服务器,它列出所有已安装的数据库。 3根据数据库的不同,此方法返回数据库中的所有表名。 4现在我有了关于两个数据库的信息以及两个数据库中所有表的名称。我将这两个数据库填充到两个数据集对象源和目标中。 5现在,我正在迭代这两个数据集,比较对应于索引的每个表。以及记录两个数据表不相同的索引

我的问题是- 1以两个数据库作为输入。 2在GUI中显示表数据的差异。并更新源数据库和/或目标数据库

区别: 显示/突出显示sourceDB中存在但不在destinationDB中的所有表记录,用户必须能够单独选择这些记录,然后应用程序应将这些记录插入destinationDB

显示/突出显示destinationDb中存在但不在sourceDb中的所有表记录,并且用户必须能够单独选择这些记录并将其从目标中删除


我可以使用实体框架做同样的事情吗?

不确定在应用程序代码中做这些有什么意义。这看起来像是DB的责任,如果您将其卸下,这将是最好的。我的意思是,您应该编写一个SQL查询来执行所有这些操作,并获取数据,然后可以在应用程序中显示这些数据


下面是一个示例

不确定在应用程序代码中执行所有这些操作的意义。这看起来像是DB的责任,如果您将其卸下,这将是最好的。我的意思是,您应该编写一个SQL查询来执行所有这些操作,并获取数据,然后可以在应用程序中显示这些数据


下面是一个示例

实体框架的正确用法是在已知模型上工作,而在您的情况下,您不是。
ADO.Net是正确的选择。

实体框架的正确用法是在已知模型上工作,而在您的情况下,您不是。
ADO.Net是正确的选择。

这并没有回答我的问题。这并没有回答我的问题。您不能对entity framework执行同样的操作,因为EF将结果集的所有条目映射到相应的类型。即使使用匿名类型,也无法使用该类型获取表架构。唯一的可能是使用纯SQL查询元数据,因此您可以更有效地使用ado.net。@DevilSuichiro感谢您的回复。我已经将数据库存储到两个DataSet对象中,现在您可以指导我如何在windows窗体中显示它们,并在GUI中显示表数据的差异。并更新源数据库和/或目标数据库。区别:显示/突出显示sourceDB中存在但不在destinationDB中的所有表记录,并且用户必须能够单独选择这些记录,然后应用程序应将这些记录插入destinationDB。对于entity framework,您不能这样做,因为EF将结果集的所有条目映射到相应的类型。即使使用匿名类型,也无法使用该类型获取表架构。唯一的可能是使用纯SQL查询元数据,因此您可以更有效地使用ado.net。@DevilSuichiro感谢您的回复。我已经将数据库存储到两个DataSet对象中,现在您可以指导我如何在windows窗体中显示它们,并在GUI中显示表数据的差异。并更新源数据库和/或目标数据库。差异:显示/突出显示sourceDB中存在但不在destinationDB中的所有表记录,用户必须能够单独选择这些记录,然后应用程序应将这些记录插入destinationDB。感谢回复。我已经将数据库存储到两个DataSet对象中,现在您可以指导我如何在windows窗体中显示它们,并在GUI中显示表数据的差异。并更新源数据库和/或目标数据库。差异:显示/突出显示sourceDB中存在但不在destinationDB中的所有表记录,用户必须能够单独选择这些记录,然后应用程序应将这些记录插入destinationDB。感谢回复。我已经将数据库存储到两个DataSet对象中,现在您可以指导我如何在windows窗体中显示它们,并在GUI中显示表数据的差异。并更新源数据库和/或目标数据库。区别:显示/突出显示sourceDB中存在但不在destinationDB中的所有表记录,用户必须能够单独选择这些记录,然后应用程序应将这些记录插入destinationDB。