C# 在不同的引擎上访问不同数据库的最佳方式是什么,但结构相似

C# 在不同的引擎上访问不同数据库的最佳方式是什么,但结构相似,c#,database,linq,C#,Database,Linq,我通常使用MySql,但也使用SQL Server、Oracle和Access,数据库结构几乎相同。我的数据库存储SCADA应用程序的配置和记录数据(“监控和数据采集”)。 大多数表通常是相同的,但有时我的队友会添加字段、表或更改某些字段类型 我正在编写一个应用程序,它需要从db加载一些配置参数,然后加载数据,处理数据,并将新值存储在db上。它还需要添加新记录 我有一个类,它独立于db类型,在给定正确的连接参数的情况下,获取一个IDbConnection对象。通过一些方法,我可以指定一个SQL查

我通常使用MySql,但也使用SQL Server、Oracle和Access,数据库结构几乎相同。我的数据库存储SCADA应用程序的配置和记录数据(“监控和数据采集”)。 大多数表通常是相同的,但有时我的队友会添加字段、表或更改某些字段类型

我正在编写一个应用程序,它需要从db加载一些配置参数,然后加载数据,处理数据,并将新值存储在db上。它还需要添加新记录

我有一个类,它独立于db类型,在给定正确的连接参数的情况下,获取一个
IDbConnection
对象。通过一些方法,我可以指定一个SQL查询,它给我和
IDataReader
或者一个
Dataset

现在,我应该如何从数据库中查询数据、分析、重新计算并最终再次存储它们? 我有点害怕构建详细的对象映射,因为可能会更改字段。简单的dataset/datatable/datarow应该可以,但我想使用linq以更简单的方式查询从数据库提取的数据

最后,我的db有大约60个表,但在这个应用程序中,我只处理其中的一打表。我只有很少的时间来构建那个应用程序,所以我需要一个快速的方法,即使它不是“非常漂亮”


谢谢。

您应该尝试根据模式自动配置自身的ORM

我找到了这个。我在c语言中没有使用类似的东西,但它在其他(动态)语言中工作得很好。

使用ORM可能是最快的。你可以用它。NHibernate确实有一个学习曲线,所以像微型ORM这样的东西可能更容易使用。是一个伟大的微型ORM,支持SQL Server、SQL Server CE、MySQL、PostgreSQL和Oracle


这些ORM将为您使用的每个数据库创建一个映射文件,在数据库中进行更改时需要更新或重新创建该文件

谢谢@Ewald Stieger,但是使用这个ORM,我必须手动创建与我的数据库表对应的所有类?是否正确?@Pomp否,ORM将自动创建类,例如,使用Petapoco,您只需指定连接字符串并运行T4模板即可创建所有DB类。