NHibernate、Castle、Linq 之间的区别 - 它们的目标人群是谁?
-
01-07-2019 - |
题
这个答案说 Linq 的目标开发者群体与 NHibernate、Castle 等略有不同。
作为 C# 的新手,不要介意围绕它的所有数据库内容:
- 由于缺乏更好的术语,是否还有其他主要的 SQL 包装器比 NHibernate、Castle、Linq 更好?
- 它们之间有什么区别?
- 他们针对什么样的开发者或开发者?
-亚当
解决方案
当你说 Castle 时,我假设你指的是 Castle Active Record?
不同之处在于 NHibernate 是一个 OR/M,针对的是想要专注于领域而不是数据库的开发人员。使用 linq to sql,您的数据库是预先存在的,并且您的关系和一些编程将由数据库的定义方式驱动。
现在 NHibernate 和 Castle ActiveRecord 之间——它们很相似,因为您从域驱动应用程序设计,但使用 NHibernate 您提供映射 xml 文件(或使用流畅的 NHibernate 映射类),其中在 Active Record 中您使用约定优于配置(使用属性来定义任何不自然适合的列和设置)。Castle Active record仍在后台使用NHibernate。
一种 OR/M 不一定是“唯一正确的方法”。这取决于您的环境、您开发的应用程序和您的团队。
您可能还想查看 亚音速. 。它非常适合活动记录,但不适合您想要主要关注域的项目。根据项目的不同,我通常使用 NHibernate(带有 Castle Active Record)或 Subsonic
其他提示
LINQ 只是一组新的 C# 功能:扩展方法、lambda 表达式、对象初始值设定项、匿名类型等。
另一方面,“LINQ to SQL”可以与其他 SQL 包装器进行比较。
实际上我们同时使用 Linq 和 NHibernate(与 Fluent)。如果您对学习曲线有一点耐心,那么您很快就会爱上它。
NHibernate 和 Linq To Sql 是对象/关系映射器,旨在轻松处理对象和 RDBMS 之间发现的阻抗不匹配。如果您想要实现一个可测试的、持久的无知应用程序,NHibernate 是您的最佳选择。我总是推荐 NHibernate 而不是 Linq To Sql。这两种工具都旨在消除数据访问的处理。您真正需要编写多少次数据访问代码?
Castle 是一个应用程序框架和控制反转容器,不提供数据访问。它提供了使用 NHibernate 的设施,以减少摩擦,并且还提供了使用 NHibernate 的 Actuve Record 模式的实现。