C# C处理多种数据库类型?

C# C处理多种数据库类型?,c#,mysql,database,sqlite,C#,Mysql,Database,Sqlite,我有一个应用程序,需要能够使用sqlite3数据库或mysql数据库。客户希望能够在这两者之间进行选择,一个是本地的,一个是在线的 我的想法是创建一个包含所有常用方法ExecuteReader、ExecuteScalar等的数据库接口,然后创建一个扩展该接口的SQLite3Database类和一个扩展该接口的MySQLDatabase类。在应用程序初始化时,它将根据客户选择的设置创建数据库接口 但是,如果我这样做了,那么我就失去了对服务器资源管理器的访问,以及添加数据集的简单方法等 所以我的问题

我有一个应用程序,需要能够使用sqlite3数据库或mysql数据库。客户希望能够在这两者之间进行选择,一个是本地的,一个是在线的

我的想法是创建一个包含所有常用方法ExecuteReader、ExecuteScalar等的数据库接口,然后创建一个扩展该接口的SQLite3Database类和一个扩展该接口的MySQLDatabase类。在应用程序初始化时,它将根据客户选择的设置创建数据库接口

但是,如果我这样做了,那么我就失去了对服务器资源管理器的访问,以及添加数据集的简单方法等

所以我的问题是。。。我这样做对吗?有没有我错过的更好的选择?如果没有,当我通过代码创建数据连接点时,如何访问ServerExplorer可用性


谢谢。

您可以使用OR/M为您提取所有数据库细节

或者,您可以为应用程序创建自己的数据访问层。您可以编写一些DAL接口,其中包含例如“GetPersonById”方法。然后,您可以为这些接口编写几个实现:

一个针对MySQL的实现 另一个以SqlLite3为目标的实现。 在应用程序中,您根据接口编程,而不是直接针对实现编程。
编写一个工厂类,该类根据配置设置实例化这些接口的正确实现。

您可以使用OR/M为您抽象所有数据库细节

或者,您可以为应用程序创建自己的数据访问层。您可以编写一些DAL接口,其中包含例如“GetPersonById”方法。然后,您可以为这些接口编写几个实现:

一个针对MySQL的实现 另一个以SqlLite3为目标的实现。 在应用程序中,您根据接口编程,而不是直接针对实现编程。
编写一个工厂类,该类根据配置设置实例化这些接口的正确实现。例如。

如果应用程序非常重要,那么我认为您应该看看ORM工具


它不会解决100%的问题,但它会让你达到目的。例如,NHibernate是我当前项目的ORM,并且只有很少的特定于数据库的代码。

如果该应用程序非常重要,那么我认为您应该看看ORM工具


它不会解决100%的问题,但它会让你达到目的。例如,NHibernate是我当前项目的ORM,并且几乎没有特定于数据库的代码。

同意。不要重新发明轮子。评估几个O/RM并选择一个适合您的需要。同意。不要重新发明轮子。评估多个O/RM,并选择一个适合您需要的O/RM。