我尝试构建3层应用程序。在DAL
我从database
(No-SQL
)到DataSets
获取数据。
在BLL
中,如果有必要,我会处理此数据。在PL
中,我显示了适当的数据。
问题是:
如果database
中的数据仍在更新,并且我需要立即获得最新的“行”,我是否应该使用某个计时器或其他地方更新DataSet
中的BLL
?
答案 0 :(得分:1)
当您说“一次”时,我必须假设您的应用程序非常渴望数据...因为您应该在DLL和BLL之间使用第4层并调用高速缓存强>
因为你需要快速的东西,而且对于快速的东西,你永远不会一遍又一遍地调用数据库,你调用一次,当有更新时,你清除该实体上的缓存,下次你的BLL询问数据,缓存为空,因此它传递给DAL以检索一组新记录,并将其放入缓存中以进行下一次调用。
要对更新保持警惕,您可以使用自己的通知系统,或者简单实现INotifyCollectionChanged
界面......
如果您不想解决所有这些问题,当您发送要更改的新行时,您已经拥有了数据,您可以轻松地将其添加到网格(或您正在使用的任何集合对象)中简单
DataTable dt = bll.ListAllEmployeesByCompanyId( 2 );
dt.Rows.Insert(0, myNewRow);
gv.DataSource = dt;
您可以通过在该网格中创建一个顶部边框并使其变为黄色(因为数据不是来自数据库)并在数据来自数据库时将其变为浅绿色(以及所有数据),轻松创建一个漂亮的UX是同步的)...
这完全取决于您的策略,它始终是我们开发的每个软件的唯一问题:
用户是否真的关心 awesome 功能?
因为,我们开发人员倾向于承担很多,有时候,你会错误地假设:)