一个库支持多个数据库
我正在使用 C# 4.0 开发一个 Windows 窗体应用程序,该应用程序将针对不同的数据库引擎,如 SQL、MySQL 和 Oracle,我想知道是否有一个库可以与所有三个引擎通信,而不是为每个引擎实现我自己的层。
提前致谢。
Im developing a windows forms application using C# 4.0 and that application is going to target different database engines like SQL, MySQL and Oracle i was wondering if there is a library that can talk to all the three engines instead of implementing my own layers for every one.
thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你可以使用 ORM 工具;我喜欢 NHibernate 但还有更多:请参阅 维基百科上的列表。
You could use an ORM tool; I like NHibernate But there are many more: see a list at wikipedia.
问题是,如果您想做任何远程高级操作(日期算术、生成主键、获取最后插入记录的 id、透视表、使用 RANGE 构造等),那么两个数据库都使用完全不同的语法。
最好的解决方案(至少在java世界中是Ibatis或Hibernate)我知道有一个.NET版本的Hibernate,但我不确定Ibatis。
这些库将您的程序与各种 SQL 方言隔离开来,并提供独立于底层数据库的通用 API。
The problem is if you want to do anything remotely advanced (date arithmatic, generate primary keys, get the id of the last inserted record, pivot a table , use RANGE construct etc.) then both databases use completely different syntax.
The best solution (in the java world at least is either Ibatis or Hibernate) I know there is a .NET version of Hibernate I am not sure about Ibatis.
These libraries insulate your program from the various SQL dialects and provide a common API independent of the underlying database.
如果您使用 System.Data.Common 中的类您可以使代码数据库独立:
在 ADO.NET 中编写独立于提供程序的代码
If you use the classes in System.Data.Common you can make your code database independent:
Writing Provider Independent Code in ADO.NET
我不懂 C#,但我知道它会有一个 ODBC 库。
看起来微软有一个这里。
它很旧,但实际上它的工作效果很好。事实上,现有的每个数据库都提供了 ODBC 驱动程序。
I don't know C#, but I know it will have a library for ODBC.
It looks like MS has one here.
It's old, but actually it does the job just fine. Virtually every DB in existence provides an ODBC driver.
查看 DbLinq。
Checkout DbLinq.