我想要一個強類型的DataSet以及設計器TableAdapters,但Visual Studio的DataSet設計器生成特定於提供者(例如SQL Server vs. MySql)的代碼,我不想只提交給一個提供者。一個ORM會有所幫助,但:強類型DataSet和每個數據庫提供者的一組TableAdapter?
- 實體框架是隻有3.5,沒有發揮好與數據集,並
- NHibernate的不支持的SQLite。
這是我想出來的:
「DataSets.Masters」 包含了完全設計數據集綁定到某些特定的提供者(例如SqlClient中),包括:
- 一個CustomTableAdapter組件,由每個設計者分類TableAdapter,
- 和ITableAdapterManager in由設計者的實施,用於分層更新的TableAdapterManager。
一切除了的DataSets.MyDataSetTableAdapters命名空間將被複制到「數據集」項目中,所有的TableAdapter碼(XS與沿:註釋)被刪除。
的DataSets.MyDataSetTableAdapters命名空間,與MyDataSet.xsd等一起,被複制並定製成每個「DataSets.SqlClient」,「DataSets.SQLite」等,它們各自的引用「數據集」的組件。
現在我只需要根據任何給定的連接字符串選擇正確的程序集來加載我的ITableAdapterManager實現。當表格架構發生變化時,我修改了大師裝配,將代碼複製到生產裝配,並運行一些測試。
所以我的問題:我讓這太難了嗎? DataSets是如此標準,並且需要通過數據訪問層支持多個數據庫引擎如此普遍,是否有一種方法不涉及複製,粘貼和搜索&替換? 你做什麼?
我喜歡這個想法,聽起來像Maurice de Beijer描述的那樣:http://www.theproblemsolver.nl/dbproviderfactory/ 我避開了這個,因爲我不想依靠自己的算法來翻譯SQL方言之間,因爲搜索和替換SQL字符串感覺不對。如果.. – 2009-01-27 22:42:17