数据库管理库

问题描述:

在我们公司,我们与各种项目的数据库系统(MySQL,MSSQL,PL/SQL,SQlite和SQLCe)一起工作。因此,我们开发了一个库,将所有内容放入一个很好的界面中,我们可以连接到每个数据库,而不用担心现在的数据库是否在后面。但是这个库总是需要在客户端计算机上安装每个数据库,因为.Net坚持(因为引用)。因此,我们使用MEF创建数据库插件,其中应用程序仅在启动时加载适当的插件,并且我们不需要在主机系统上安装任何其他数据库系统。数据库管理库

无论如何,我们仍然因为每个数据库的不同而挣扎。比方说,我们希望具有在目标数据库中自动生成所需表和数据(如果它们不可用)的过程。或者如果不同的数据库使用不同的数据类型。事情变得非常复杂,至今我们也对LINQ2SQL感兴趣,它似乎无法处理MySQL,SQlite和PL/SQL。

我的问题:

是否有任何免费/ OSS C#库,接管这个任务?我们在哪里可以完全控制我们的数据库,而不用考虑现在使用哪个数据库?

Entity Framework可以满足您的所有需求。这个框架有许多数据库引擎的提供者,它也有迁移机制,可以根据你的模型调整你的应用程序的数据库。

任何成熟的ORM图书馆将做的工作

检查this网站上看到的功能比较和流行的ORM库的性能

+0

我花了几天的时间研究实体框架,我还不确定这是否符合我们的需求。我希望你能澄清几点:1)EF似乎很大程度上依赖于Visual Studio环境,也是app.config,但我们有我们自己的配置解决方案。如何使用app.config指定连接字符串w/o? 2)当EF创建一个新的数据库时,它似乎创建了一个SQLCeDB。这是可配置的吗? 3)是否有可能同时有多个连接到不同的数据库? – Neurodefekt 2013-03-21 14:35:04

+0

1)您可以在不使用Visual Studio的情况下完全使用EF,例如首先检查EF代码,但是当您从现有数据库创建模型时,VS设计器非常实用且方便,但仍不是必需的。 2)EF可以使用任何现代数据库 3)检查http://*.com/questions/2659942/entity-framework-4-and-multiple-database – jezzarax 2013-03-22 12:25:39

NHibernate的会我的选择。如果您通过Castle ActiveRecord图层访问它,则更容易使用。