2012-12-29 57 views
2

我正在使用asp.net并且正在使用SQL SERVER 2008. 在我的代码中,所有DML操作都是在SqlConnection,SqlCommand,SqlDataAdapter的帮助下发生的。更改连接对代码的影响

但是,当如果我的数据库移动到ORACLEMySQL的那么我需要编写ORACLE的代码 - 的OleDbConnection,OleDbCommand的,OleDbDataAdapter的 MySQL的 - 需要包括一个MySQL DLL。

现在由于这个巨大的变化,我需要重新编写整个代码。

  1. 有没有什么办法可以解决这个问题,我们一次编写代码,而不依赖于数据库提供者?
  2. 实体框架是否出现在这张照片中的任何地方?

请指导我。

+0

是的,EF进入第1点。 – SeToY

+1

EF会有所帮助,但即使在EF的日子之前,这也是一个问题。你要做的是将数据库逻辑封装在数据访问层中,只有DAL上的代码依赖于数据库提供者。 –

回答

2

如果您使用System.Data.Common基类DbConnectionDbCommand和其他类写你的数据访问层,你可以传递和使用任何的继承类型的

这意味着你只写了一次数据访问层,但是注入了你使用的实际类型,可能使用的是IoC容器。

大多数ORM,包括EF,都使用这种技术来与数据库无关。

+0

只需添加,使用像IDbConnection或IDbCommand这些接口就可以提供更多的灵活性 – Wolfwyrd