今天为 ASP.net 推荐哪个数据访问层?
Posted
技术标签:
【中文标题】今天为 ASP.net 推荐哪个数据访问层?【英文标题】:Which Data Access layer is the recommended today for ASP.net? 【发布时间】:2010-10-16 02:35:25 【问题描述】:我目前正在建立一个小型网站,我会在其中写下出现的问题并给出答案,以供其他人查看。目前我使用的 DAL 很像 here 所描述的。现在我一直在研究其他模型,特别是使用 Linq2SQL 和 ADO.net Entries 框架的基于 linq 的模型。我意识到我正在以某种方式将数据访问移动到代码层,因为然后我会过滤掉例如带有 linq 查询的***列表。我开始这样做的原因是因为 DAL 并没有真正与数据库同步,并且当我更改数据库中的某些内容时,可空类型变得不可空。然后,如果我将表重新导入数据表,我的查询就会丢失。
我的简单问题是,如果您今天想要一个适用于 ASP.net 的良好 DAL,那会是什么?建议和经验非常受欢迎。
【问题讨论】:
【参考方案1】:有很多选择,根据您的具体情况,每种选择都可能会更好。一些选项包括:
LINQ to SQL ADO.NET 实体框架 NHibernate 亚音速 手动写一个:)我的默认选择是 LINQ to SQL。不过,这完全是个人喜好。许多人都是 NHibernate 的拥护者。
【讨论】:
【参考方案2】:我个人更喜欢 LINQ to SQL 和 ADO.NET Entity Framework。微软人员也在他们最新的项目中使用了这些技术(例如,看看 KOBE 项目)。因此,Microsoft 也推荐这两个。
虽然.. 有时我使用来自Enterprise Library 的数据访问应用程序块和手动 DAL 编码,当我需要最大程度地控制它的功能和实现时。
其他替代方案是:NHibernate、SubSonic、不同的 ORM 解决方案,例如 LLBLGen Pro。
关于这个主题的好书:
Pro LINQ: Language Integrated Query in C# 2008 Jr., Joseph C. Rattz LINQ in ActionFabrice Marguerie Programming Entity Framework 朱莉娅·勒曼(Julia Lerman) Murach's ADO.NET 3.5, LINQ, and the Entity Framework with VB 2008 Anne Boehm相关工具:
LINQPad 也是学习 LINQ 的好方法:它预装了本书 C# 3.0 in a Nutshell 中的 200 个示例。没有比这更好的方式来体验 LINQ 和函数式编程的酷炫了。【讨论】:
我肯定会买一本关于 Linq to SQL 的书。我开始玩它,它看起来非常有能力,正如你所说,MS 自己使用它,但有人告诉我在代码中保留 db 逻辑是不好的,但也许这毕竟不是一个坏主意。感谢您的回答! 我也认为将所有数据库逻辑保留在代码中并不是一个好主意。我通过映射将存储过程与 LINQ to SQL 和实体框架一起使用。【参考方案3】:我在当前项目中使用OPF3,主要是因为它对 Pervasive.SQL v9.5 有出色的支持。支持也很棒。
【讨论】:
是的!Chili.Opf3.Storages.Oracle.OracleStorage
是System.Data.OracleClient
的接口。以上是关于今天为 ASP.net 推荐哪个数据访问层?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 数据访问层。使用 sqlhelper.cs 不好吗?