【发布时间】:2011-11-13 23:11:33
【问题描述】:
我已经研究这个问题几天了,希望有人能给出答案。我想这个问题的更一般的描述是多个用户将从应用程序的多个实例访问数据库,我希望尽可能保持数据的本地副本为最新。这是我目前的尝试,但我愿意以任何方式保持本地副本与数据库同步。
我有两个数据表:
dtOriginal 在应用程序启动时加载,并且允许用户对其进行编辑。
dtFromDb 在用户更改表单上显示的记录时加载,它仅包含更改后正在显示的记录的当前值。
仅当 dtOriginal 中的行未标记为“已修改”时,我才尝试使用 dtFromDb 中的值更新 dtOriginal 表。
我一直在尝试使用 System.Data.DataTable 类的合并方法。
StronglyTypedDataTable dtOriginal = StronglyTypedDataTableAdapter.GetData();
// User modifies one record through collectionview...
// displayed record is then changed and the following occurs
StronglyTypedDataTable dtFromDb = StronglyTypedDataTableAdapter.GetDataByID(currentID);
dtOriginal.Merge(dtFromDb, true);
如果标记为“未修改”的任何行在程序的另一个实例中发生更改并传播回数据库,那么它们将使用数据库中的任何新本地值进行更新,但这是不是这样。看起来 dtFromDb 确实从数据库中获取了更新的值,但我不能正确使用合并方法,因为更新的值不会传播到本地副本。
任何想法将不胜感激。
谢谢,
泰勒
【问题讨论】:
-
您想将 dtFromDb 的值更新为 dtOriginal 或数据库?并告诉您更新数据库中的记录是否使用任何循环?
标签: c# database merge datatable