在Linq to SQL中重写NHibernate应用程序

gru*_*ber 4 c# nhibernate linq-to-sql

我有一个使用NHibernate编写的旧的过时应用程序.现在我想重写它,包括新功能和模型的重大变化.

使用Linq to SQL而不是NHibernate的主要缺点是什么?

使用LINQ to SQL可能存在哪些问题,是否使得DataContext像singleton一样会导致性能不佳?

reb*_*ard 8

"在DAL中封装数据访问的错误神话":

"我想使用NHibernate设计一个系统/应用程序.但是我也想要如此灵活,以后如果我拔掉NHibernate并使用ADO.NET Entity框架或其他框架,那么我的应用程序不应该崩溃."

简而言之,我甚至完全反对尝试这样的事情.

它基于有缺陷的假设

这背后的许多驱动力是基于在数据访问层使用自己的方言直接访问数据库的时间内构建的历史驱动器,导致需要创建这样的封装以支持多个数据库.

这个驱动器的问题在于它不再是一个因素,所有现代OR/Ms都可以有效地处理多个数据库.而且,现代OR/M不再仅仅是执行某些SQL并获得结果的方法,这就是DAL的旧式写法.OR/M承担更多责任,从更改跟踪到缓存管理,从确保乐观并发到管理与数据库的最佳通信.

这些功能很重要.不仅如此,它们在每个OR/M之间也不同.

它不起作用,你会发现它太晚了

主要的问题是,无论你怎么努力,不同的OR/Ms之间都会有微妙而不那么微妙的差异,这些变化会极大地影响你构建应用程序的方式.

那么你如何在OR/Ms之间移动?

有些人希望从一种数据访问技术转移到另一种数据访问技术.我参与了几个这样的工作,我们在每个案例中使用的方法是移植,而不是试图删除新的IDataAccess实现.