我想要一个强类型的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