6

我正处于计划将大型经典 ASP 数据库应用程序转换为 ASP.Net 的早期阶段,并且在选择使用哪种数据访问方法时遇到了麻烦。我玩过 Linq To SQL、动态数据、强类型数据集、企业库(数据访问应用程序块)和一点点实体框架,但没有一个让我觉得“那个”。选择太多了-我的头在游泳,帮我选择!

也许这将有助于提供一些关于我正在转换的应用程序的背景以及优先级......

  • 后端是 Microsoft SQL Server(2005 或更高版本),我们致力于此,因此我无需担心是否支持不同的数据库平台。

  • 数据库非常成熟,包含了大量的业务逻辑。它高度规范化并广泛使用存储过程、触发器和视图。我不想同时重新发明两个轮子,所以我想对数据库做尽可能少的改动。因此,我需要选择一种足够灵活的数据访问方法,让我能够解决数据库中的任何问题。

  • 该应用程序具有许多数据输入表单和广泛的搜索和报告功能(报告是我稍后将解决的另一个问题)。

  • 应用程序需要足够灵活,以处理对数据库结构的微小更改。应用程序(和数据库)可以安装在对数据库进行少量自定义修改的不同站点。理想情况下,应用程序可以识别数据库扩展并做出适当的反应。换句话说,如果我需要在应用程序中存储一个 O/R 映射,我需要在新站点上安装应用程序和数据库时能够将其换出(或轻松刷新)。

  • 快速应用程序开发至关重要。由于数据库已经完成,并且用户界面将与现有应用程序紧密匹配,我希望找到一些可以很快完成的东西。如果可以节省开发时间,我愿意牺牲不使用绝对最新和最伟大的技术。换句话说,如果使用 Entity Framework 之类的东西有一个陡峭的学习曲线,我可以使用强类型数据集和自定义 DAL 之类的东西,如果它可以加快进程的话。

  • 我是 ASP.Net 的新手,但对经典 ASP、T-SQL 和旧的 ADO(例如断开连接的记录集)非常熟悉。如果任何一种数据访问方法更适合来自我背景的人,我可能会倾向于那个方向。

感谢您提供的任何建议!

4

3 回答 3

5

查看本系列中的所有三篇文章:

高性能数据访问层架构第 1 部分

很好的建议。

于 2009-04-23T16:27:38.153 回答
2

您可能希望考虑将数据库层与 asp 层分离,这样您不仅可以在做出决定时提供更大的灵活性,而且当您必须对客户的数据库进行更改时,您可以在不更改任何内容的情况下换入新的 dll别的。

通过使用依赖注入,您可以使用 xml 告诉框架将哪个具体类用于接口。

这样做的好处是您可以使用一种数据库方法,如果您后来决定更改为另一种,那么您可以只更改 dll 并继续,而不对其他层进行任何更改。

既然您更熟悉它,为什么不直接通过自己的连接直接进入数据库呢?然后,您可以移动其余代码,并在此过程中决定使用无数种技术中的哪一种。

对于我正在开发的一个新应用程序,我从 LINQ to SQL 开始,主要是因为开发会更快,但是,稍后,如果我决定这不能满足我的需求,我将把它换掉。

于 2009-04-23T16:37:44.977 回答
1

nHibernate 可能是一个不错的选择。您可以将映射存储在外部配置文件中,这将解决您的需求。另一种选择可能是使用基于 nHibernate 的ActiveRecord 。

nHibernate 有一个简洁的功能,您可能会发现它很有帮助。它被称为动态属性,它基本上是通过从映射文件中提取列名来填充的名称值对集合。因此,当您在客户端站点添加列时,您会更新映射文件,并且您将能够通过对象上的集合访问数据。

于 2009-04-23T16:09:04.187 回答