0

我尝试构建 3 层应用程序。在DAL我从database( No-SQL) 到DataSets. 如果BLL有必要,我会处理这些数据。在PL我显示适当的数据。

问题是:如果数据database仍在更新,并且我需要立即拥有最新的“行”,我应该DataSet使用BLL某个计时器还是其他地方进行更新?

4

1 回答 1

1

当您说“立即”时,我必须假设您的应用程序非常渴望数据……为此,您应该在 DLL 和 BLL 之间使用第四层并称为Cache

因为它接缝你想要快速的事情,并且为了快速的事情,你永远不会一遍又一遍地调用数据库,你调用一次,当有更新时,你清除该实体上的缓存,下次你的 BLL 询问数据时,缓存是空的,因此它传递给 DAL 以检索一组新记录,并将其放入缓存中以供下次调用。

要警惕更新,您可以制作自己的通知系统,或简单地实现INotifyCollectionChanged界面...

如果您不想麻烦,当您发送要更改的新行时,您已经有了数据,您可以轻松地将其添加到网格(或您正在使用的任何集合对象)中

DataTable dt = bll.ListAllEmployeesByCompanyId( 2 );
dt.Rows.Insert(0, myNewRow);
gv.DataSource = dt;

您可以通过在该网格中制作一个顶部边框并将其设为黄色(因为数据不是来自数据库)轻松创建一个漂亮的用户体验,并在数据全部来自数据库时将其变为浅绿色(并且所有内容都是同步的) ...

这完全取决于您的策略,始终取决于我们开发的每个软件的唯一问题:

用户真的关心这个很棒的功能吗?

因为,我们开发人员倾向于假设很多,有时,您确实假设错误:)

于 2012-05-16T10:09:39.443 回答