我很困惑在哪里放置一些代码。我有一个列表框,列表项目存储在数据库中。问题是,我应该在哪里放置从数据库中检索数据的代码?我已经有了一个带有ExecuteSelectQuery()方法的数据库类。我应该用方法public DataTable GetGroupData()创建Utility类吗? / * group是listbox * /此方法然后从数据库类中调用方法ExecuteSelectQuery()。
我该怎么办?
答案 0 :(得分:4)
您可以查看实施的许多数据访问模式。 Repository pattern可能会让您到达目的地。
我们的想法是拥有一个可以获取Group数据的GroupRepository类。它不必过于复杂。像GetAllGroups这样的简单方法可以返回可用于ListBox项的集合。
答案 1 :(得分:2)
您可以简单地将数据库代码抽象为实用程序类,如您所示,这不是一个糟糕的解决方案。 (使用WebForms可能无法改善。)然而,如果系统最终变得非常复杂,那么您可能想要选择更正式的架构...
可能ASP.NET的最佳选择是ASP.NET MVC Framework,它完全取代了WebForms。它围绕Model-View-Controller架构模式构建,该模式专门用于清楚地分离用户界面和后备逻辑的代码,这似乎正是您想要的。 (实际上,它使网站的设计在很多方面更加结构化。)
此外,如果要为数据库系统创建更结构化的模型,请考虑使用ORM,例如ADO.NET Entity Framework。但是,如果您的数据库不是很复杂,这可能会有点过分。使用MVC模式可能会产生更大的不同。
答案 2 :(得分:1)
考虑在UI和数据访问层之间添加一个图层。如果数据没有经常更改,您可以实现某种缓存 - 这样您就可以避免从数据库中多次检索相同的数据。
我会向你推荐Application Architecture Guide book。
的Pavel
答案 3 :(得分:0)
看起来您已经通过数据库类实现了数据访问层。我想现在的困惑在于实现演示和业务层。对我而言,“GetGroupData”更多地是Business层的一部分,是正确的实现方式。它允许您在将来进行更改,对表示层的影响很小或没有影响。因此,您建议的流程看起来正确。 LoadListBox后跟GetGroupData,后跟ExecuteSelectQuery。