与数据库无关的ASP.NET应用程序?
我正在开发的ASP.NET应用程序的一个要求是与数据库无关;也就是说,能够与大量数据库引擎对话,而不必对代码进行重大更改。我已经知道解决方案的第一部分涉及在接口后面抽象DAL(数据访问层),这使得在不更改代码的情况下替换DAL成为可能,但我面临的问题是如何实现DAL 这方面的研究一直没有定论,但它告诉我我有两个选择:与数据库无关的ASP.NET应用程序?,asp.net,orm,ado.net,data-access-layer,database-engine,Asp.net,Orm,Ado.net,Data Access Layer,Database Engine,我正在开发的ASP.NET应用程序的一个要求是与数据库无关;也就是说,能够与大量数据库引擎对话,而不必对代码进行重大更改。我已经知道解决方案的第一部分涉及在接口后面抽象DAL(数据访问层),这使得在不更改代码的情况下替换DAL成为可能,但我面临的问题是如何实现DAL 这方面的研究一直没有定论,但它告诉我我有两个选择: 使用ORM(如实体框架或Dapper) 完整地写 在ADO.NET中 实体框架很简单,但似乎一旦我生成了模型,EF就不允许我更改它所针对的DB引擎。OTOH,在ADO.NET中
- 使用ORM(如实体框架或Dapper)
- 完整地写 在ADO.NET中
提前感谢。实体框架似乎可以-
然而,对我来说,这听起来像是灾难的秘诀。我会使用ANSI SQL自己编写它,确保我在所有数据库中的表、列和数据类型匹配并具有相同的行为——以及外键、自动键生成等。然后测试所有内容并祈祷。看起来实体框架可以做到-
然而,对我来说,这听起来像是灾难的秘诀。我会用ANSI SQL自己编写,确保所有数据库中的表、列和数据类型都匹配并具有相同的行为——以及外键、自动键生成等。然后测试所有内容并祈祷。所以我几乎被ADO.NET和ANSI SQL卡住了?幸运的是,我不需要使用很多特殊的特性(最多是视图和存储过程,在任何情况下,我都可以在DAL后面抽象这些特性)。我唯一会错过的就是EF对FKs的支持。所以我几乎被ADO.NET和ANSI SQL所困扰?幸运的是,我不需要使用很多特殊的特性(最多是视图和存储过程,在任何情况下,我都可以在DAL后面抽象这些特性)。我唯一会想念的就是英孚对FKs的支持。