【发布时间】:2011-01-23 12:30:53
【问题描述】:
当没有现成的替代方案时,我所在的公司编写自己的业务数据应用程序。大多数时候是 - 登录屏幕 - 一些屏幕主要是 SQL Server 表的可视化 - 一些报告
过去他们使用的是 MS Access。这些并不完全是最优秀的编码人员,但他们大多了解如何构建数据库以及他们想要的 UI。
我们宁愿有一个通用的登录屏幕、菜单屏幕等,我们可以插入应用程序并开始使用。这应该有助于提高开发速度和可维护性。
当然,有不止一种方法可以做到这一点,而我们问题的核心似乎是数据访问。选项似乎包括:
1) GUI 数据集/表格适配器(如 ASP.NET 上的视频)向您展示了如何操作。我们中的一些人已经做了很多这样的事情。有利于开发速度。有时数据连接会在您不注意的情况下发生变化。巨大的方法签名(插入或更新时每个字段一个参数)很容易出错。有时参数检测不正确。动态参数(例如带有可选过滤器的报告)非常困难。
2) 非常结构化的 n 层样式。例如,网格的数据源是对象的集合。表示层调用对象 A 中的静态方法,该方法调用数据访问层方法,该方法为从数据库返回的每一行实例化 A。 A 需要为表中的每个字段提供 get/set 方法以及内部变量和构造函数变量。每个字段都被输入了很多次。没有什么是永远的。对这么简单的应用程序来说可能有点矫枉过正。
3) 通用表使用通用函数驱动所有内容,这些函数循环遍历字段列表以动态创建 UPDATE 和 INSERT 语句。选择主要是 SELECT * 类型的东西。快速发展,但缺乏强大的打字让我感到害怕。似乎 SQL 注入地雷无处不在,但我确信只需将引号加倍即可避免这种情况。
那里肯定有更多选择,但我不知道它们是什么。您对我/我们有什么建议吗?
【问题讨论】:
-
只是好奇谁会否决所有这些好的建议,而无需费心解释。如果建议不好,至少让我们知道原因,以便我们学习。
-
我的想法完全正确。我们的答案很相似,所以我投了你的票 :) 我相信动态数据和/或脚手架是他所追求的
-
@David Stratton:我也很好奇,至少可以说这种行为很奇怪。我投票结束整个问题,以阻止报复性投票。
-
显然有人不喜欢 ORM。
-
如果您没有 VS 2008(VS 2010 现已推出!),您肯定会错过很多。 IIRC 除了 DataSets 之外确实没有太多选择,尽管您可以将 NHibernate 与 XML 映射一起使用(不是 Fluent NHibernate)。
标签: .net data-access