• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

应该如何在C#/ MSAccess项目中同步表和视图?

c/c++ 来源:Adam Covitch 4次浏览

我有一个C#数据库驱动的应用程序,其中多表Access数据库作为后端。除了表格之外,我还有几个视图可以重新格式化表格,以方便查看。我的理解是视图仅用于数据显示,不应用于更改数据,尤其是当它们包含外键绑定时。我很好。应该如何在C#/ MSAccess项目中同步表和视图?

所以我们可以说我有一个赞助表和视图vPatrons:

DataTable Patrons; 
DataTable vPatrons; 

我有一个绑定到vPatrons和一堆组合框和必然赞助文本框一个DataGridView。当用户进行了更改,点击保存按钮我提交更改的惠顾表:

_bindingSource.EndEdit(); 
_tableAdapter.Update(Patrons); 

所以现在我的赞助人的DataTable,惠顾的数据库表和vPatrons数据库视图都被更新。但我仍然需要更新我的vPatrons数据表!我能想到的唯一办法做到这一点是重新填满整个vPatrons数据表,这似乎效率极其低下的对我说:

_tableAdapter.Fill(vPatrons); 

有谁知道一个更好的方式来保持在内存中的表和视图同步?

===========解决方案如下:

我觉得你太过于复杂了,真的! 我想现在有一个答案,但要真正告诉你最好的解决方案并不容易,因为没有看到你的表和视图的模式。我不知道这些对象在列方面有多不同。

如果您需要从表中读取数据并以另一种方式或视图显示相同的数据,我宁愿从数据库加载一次数据,然后将数据存储在DataTable中。

这样你就可以在.NET端获得你的数据了。

,如果你现在需要在UI显示某种方式操纵相同的数据,我会在.NET方面,让您保持连接到同一个数据表中一个DataView工作,创建这样说:

变种myView = new DataView(赞助人);

此时视图已连接到表,您可以过滤,排序,添加表达式列等,并且它始终与数据保持连接。

如果您认为数据库中的视图过于复杂,并且您不想在.NET应用程序中重新创建此类视图逻辑,那么也很好,您应该决定是否加载表或视图,请考虑你也可以只加载表中的视图,一旦你有了ID,你可以用特定的更新语句向数据库发送更新,而不需要只用整个tableAdapter保存。我可以避免必须保持.NET应用程序中的两个对象同步……(它们都是DataTable,实际上即使其中一个用填充访问视图)也是如此。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)