以下的文章主要介紹的是MySQL數據庫與PostgreSQL的DAAB ,提及MySQL數據庫都是我們大家耳熟能詳的,那麼PostgreSQL的DAAB 是不是有點陌生?以下的文章就有對PostgreSQL的DAAB與MySQL的介紹。
最近在研究EntLib2.0的DAAB。DAAB的特性之一是可以使我們在編寫代碼的時候不必關心數據庫到底是什麼,也就是DAAB可以當作數據庫抽象層。但是你得有你要使用的數據庫在這個抽象層之下的驅動。
我們知道現在開源關系數據庫主要有兩個,一個是MySQL,一個是PostgreSQL。這兩個數據庫現在都有現成的開源.NET Data Provider。由於微軟也提供了EntLib2.0的源代碼,這樣我們很容易仿照其SQL Server的DAAB Database Provider寫出他們在抽象層之下的驅動。我試著寫了一下,MySQL數據庫的部分實現了,PostgreSQL的完全沒有實現。
MySQL的DAAB Database Provider除了XmlReader相關的部分,其他部分都實現了。這是由於MySQL的.net connecter雖然是仿照SQLServer的.NET Database Provider來定義的接口,但是.NET Framework 2.0新增的一些內容還沒有實現,MySQL對於XML的支持也不如SQL Server那麼完善。
PostgreSQL的DAAB Database Provider完全沒有實現。和MySQL數據庫的.NET Database Provider類似,PostgreSQL的Npgsql也沒實現XmlRaeder的功能,除此以外,Npgsql的NpgsqlCommand對象竟然沒有繼承DbCommand, ICloneable,導致在一些NpgsqlCommand強制轉換的情景下會失敗。這個情況導致了PostgreSQL的DAAB Database Provider沒辦法實現。
比較MySQL和PostgreSQL對.NET的支持,看來是MySQL更勝一籌。
為了解決使用Entlib的DAAB來訪問PostgreSQL的問題,估計可能得寫一個ODBC的DAAB Database Provider了。研究了一下ODBC的.NET Database Provider的情況,似乎ODBC和MySQL數據庫的情況類似,在.NET Framework2.0的類庫裡面並沒有對XmlReader支持,估計仍然不能實現ODBC的DAAB Database Provider的XmlReader部分。
以上的相關內容就是對MySQL數據庫和PostgreSQL的DAAB 的介紹,望你能有所收獲。