我正在开发的ASP.NET应用程序的要求之一是要与数据库无关的;也就是说,能够与大量的数据库引擎进行交流,而无需对代码进行重大更改。我已经知道解决方案的第一部分涉及在接口后面抽象DAL(数据访问层),并且可以在不更改代码的情况下替换DAL,但是我面临的问题是如何实现DAL。数据库不可知的ASP.NET应用程序?
研究已经在这方面是非常不确定的,但它告诉我,我有两个选择:
- 使用ORM(如实体框架或小巧玲珑)
- 在ADO.NET 完全 写它
实体框架很简单,但似乎一旦生成模型,EF就不会允许我更改其目标数据库引擎。 OTOH在ADO.NET中编写了许多DAL(每个目标引擎都有一个DAL),这使我具有了这种灵活性,但是我一直从头开始编写所有的东西。
所以,我有以下问题:
- 有没有一种方法,使EF再跟上运行不同的数据库引擎?
- 如果没有,是否有任何支持多个数据库引擎的成熟,稳定的ORM?
在此先感谢。
我不确定你的意思是“在运行时”和“在飞行中”。除了实体框架,Dapper和核心ADO.NET,NHibernate是另一种选择。 它几乎支持所有常用的数据库。它有助于将数据访问层与业务逻辑或应用程序层分开。它被广泛使用和积极开发。负面的一点是它的学习曲线。 –