数据库查询的多态性

时间:2009-06-09 13:52:48

标签: c# database-design oop polymorphism

我正在设计一个仪表板来显示公司指标(目前在C#中使用ASP.net 3.5),并寻找有关设计的建议。我不习惯在Web应用程序中使用OOP。

在多对多关系中,不同用户可能会看到许多不同的指标。我将用户存储在本地SQL数据库中,当然也可以存储每个“度量标准”的元数据。这也为每个提供了一种访问控制列表。每个度量标准可以有几个不同的图表,这些图表具有不同的设计(条形图,柱形图,饼图,线条,或者在不同y轴上具有不同系列的组合等等)。

这些图表可以通过编程方式设计,然后在运行时添加到ASP.net页面。拥有一个空白图表的超类的继承结构和扩展它的不同图表类型会很好。

该页面将选择给定用户有权查看的图表,然后生成这些图表。尽管如此,我还是看到某种大的switch语句作为原始查找表,用于根据数据库中选择的信息实例化相应的子类。

有更艺术的方法吗?以某种方式在运行时提供类型声明?我是否应该将有关图表的所有样式信息移动到数据库中,并为系列,数据点,颜色等添加其他表和列,其中单个图表类执行所有必要的查询并构建图表?感谢。

2 个答案:

答案 0 :(得分:1)

我意识到我正在寻找的东西可以通过动态类加载来解决。 在Michael Clarke的C#here中有一个很好的动态类加载示例。

基本上我可以根据来自查询的字符串文件名加载一个类。

答案 1 :(得分:0)

您可以在数据库中存储类的强名称,然后只需创建该类的实例。

因此,您可以存储类似

的条形图,而不是对其条形图进行排序
YourNamespace.UI.Charts.Bar

就个人而言,我不会太害怕只是存储图表类型,因为它为您提供了一个可能有用的抽象层。