C# 数据集表适配器填充方法

C# 数据集表适配器填充方法,c#,.net,sql,dataset,C#,.net,Sql,Dataset,我有一个数据集,其中包含两个TableAdapter 1对多关系,该关系是使用visual studio 2010的配置向导创建的 我调用外部源并用结果填充字典。这些结果应该是数据库中的所有条目。要同步数据库,我不想只清除所有表,然后重新填充它们,就像删除表并用sql中的新数据创建它们一样 是否有一种干净的方法可以使用TableAdapter.Fill方法,或者我必须逐行遍历这两个表,并决定它是保留还是删除,然后添加新条目?使字典中的数据成为我的两个数据集表中唯一的数据的最佳方法是什么?第一个问

我有一个数据集,其中包含两个TableAdapter 1对多关系,该关系是使用visual studio 2010的配置向导创建的

我调用外部源并用结果填充字典。这些结果应该是数据库中的所有条目。要同步数据库,我不想只清除所有表,然后重新填充它们,就像删除表并用sql中的新数据创建它们一样


是否有一种干净的方法可以使用TableAdapter.Fill方法,或者我必须逐行遍历这两个表,并决定它是保留还是删除,然后添加新条目?使字典中的数据成为我的两个数据集表中唯一的数据的最佳方法是什么?

第一个问题:如果是同一个数据库,为什么有两个表具有相同的信息

对于眼前的问题:largley取决于尺寸。如果表不大,则使用事务,清除表DELETE*FROM table或其他内容,然后再次将数据写入其中。 另一方面,如果桌子很大,问题是:你能把所有这些都放到字典里吗

当然,你必须问问自己,当你的字典中有不一致的数据时,另一个用户/应用程序更改了该数据会发生什么

如果这需要很长时间,您可以记住您对数据所做的操作——这意味着:标记更改的数据,记住已删除的键和新插入的行,并根据它们进行更新

这两种方法都可以通过记住填充的数据表并将其用作支持字段或实现您自己的机制来实现

无论如何,我建议你思考一下这个问题:你真的需要字典吗?为什么不对数据库进行查询以获取数据?还是只缓存一部分数据以便快速访问


备注:DataAdapter上的更新方法将完成更改、删除和插入新数据行的所有工作,但它将更新DataTable/Set,因此这只会工作一次。重新填充整个表可能比通过并决定要保留哪些记录更快。您是否可以通过sql语句来决定是否删除记录?如果希望它们保留在数据库中而不是数据集中,请从表中删除,其中active=false从表中选择*,其中active=true


您可以有一个日期字段,并选择自您延迟“汇集”数据库之日起添加的所有记录,从表中选择*,其中active=true,dateadded>12:30

我只能访问我正在修改的数据库。另一个数据库位于active directory中的某个位置,我只能通过System.DirectoryServices api访问,因此我将结果存储在哈希数据结构中。如果我只能访问数据集,有没有办法像那样直接使用sql?你能写入AD数据库吗?如果是这样,为什么要使用onw数据库呢?也许你能找到一种方法与广告的数据库专家合作?我只能从广告中阅读。我的老板要求我使用自己的数据库,主要是因为性能。它是存储在AD中的数据的一小部分,但我不想写入它,因为AD就像主数据库,我在模仿它的一小部分。很好,你不能保持数据同步-只需复制数据一次,并只使用你自己的数据库-采用Linq2Sql或数据集方法,这是最简单的方法…它只会很简单每天与数据集同步几次。我在寻找有关fill方法如何工作的更多信息,或者寻找替换表中所有数据的最佳方法。我在想,使用DataTable和DataRow类创建一个新表,然后将其传递给fill方法可能会更容易些?我一直在想一个sql语句可以帮我做到这一点,但这比查看活动列要复杂得多。我有一个组表,然后是一个成员表,其中fk指向它们所属的组。@Ben SQL是一种强大的数据操作语言,您可以轻松地从选定字段创建临时表,甚至可以将其他表附加到另一个表中。。。也许你需要退后一步,看看更大的图景?希望我能。。。老板和其他团队成员要求我这样做。