2009-06-09 57 views
2

我很困惑,在哪里放置一些代码。我有一个列表框,列表项存储在数据库中。问题是,我应该在哪里放置从数据库中检索数据的代码?我已经有了一个带有方法ExecuteSelectQuery()的数据库类。我应该用一个方法public DataTable GetGroupData()创建Utility类吗?/*组是列表框* /此方法然后从数据库类调用方法ExecuteSelectQuery()。C#在哪里放置检索GUI数据的代码?

我该怎么办?

回答

2

您可以简单地将数据库代码抽象为实用程序类,如您所建议的那样,这不是一个可怕的解决方案。 (你可能无法用WebForms好得多。)但是,如果系统最终会变得相当复杂,那么你可能想要选择一个更正式的架构......

可能是ASP.NET的最佳选择是ASP.NET MVC Framework,它完全取代了WebForms。它围绕着Model-View-Controller体系结构模式构建,该模式专门用于明确分离用户界面和退缩逻辑的代码,这似乎正是您想要的。 (事实上​​,它使得网站的设计在很多方面更加结构化。)

此外,如果要为数据库系统创建更加结构化的模型,请考虑使用ORM,例如ADO.NET Entity Framework。但是,如果你的数据库不是很复杂,这可能是过度的。使用MVC模式可能会产生更多的差异。

1

考虑在UI和数据访问层之间添加一层。如果数据没有经常更改,那么您可以实施某种缓存 - 这样您就可以避免从数据库中多次检索相同的数据。我想给你推荐Application Architecture Guide book

Pavel

4

有许多数据访问模式可供您查看实现。一个Repository pattern可能会让你需要去的地方。

这个想法是有一个GroupRepository类获取组数据。它不必过于复杂。像GetAllGroups这样的简单方法可以返回可用于ListBox项目的集合。

0

看起来您已经拥有通过数据库类实现的数据访问层。我想现在的困惑在于实现演示和业务层。对我而言,'GetGroupData'更像是业务层的一部分,并且是正确的。它将允许您在未来进行更改,而对表示层影响最小或没有影响。因此,您建议的流程看起来正确。 LoadListBox后跟GetGroupData,后跟ExecuteSelectQuery。