C# 支持同一项目中多个数据库的微型ORM?

C# 支持同一项目中多个数据库的微型ORM?,c#,.net,C#,.net,在同一个项目中是否有支持多个数据库的轻量级ORMs(如PetaPoco) 如果ORM是类型化的,并且可以生成所有实体,那就太好了。支持这种开箱即用的好方法 public bool Equals(Identity other) { return other != null && gridIndex == other.gridIndex && type == other.type &&

在同一个项目中是否有支持多个数据库的轻量级ORMs(如PetaPoco)

如果ORM是类型化的,并且可以生成所有实体,那就太好了。

支持这种开箱即用的好方法

public bool Equals(Identity other)
{
    return
        other != null &&
        gridIndex == other.gridIndex &&
        type == other.type &&
        sql == other.sql &&
        commandType == other.commandType &&
        connectionString == other.connectionString &&
        parametersType == other.parametersType;
}
标识缓存将连接字符串作为标识的一部分。这意味着您可以为所有查询获得优异的性能,因为materializer和param提取器是缓存的,但缓存是按每db进行的。缓存还具有对数据库模式更改的弹性

Dapper适用于POCO和/或dynamics,您可以选择。Contrib包含一些帮助程序,可以使
更新
插入
等变得更简单

这里唯一需要注意的是,它不会为您生成实体。您需要自己的代码来实现这一点

举一个基本的例子:

DbConnection db1 = ...
DbConnection db2 = ...

var dataFrom1 = db1.Query<Order>(sql, args);
var dataFrom2 = db2.Query<Order>(sql, args);
DbConnection db1=。。。
数据库连接db2=。。。
var dataFrom1=db1.Query(sql,args);
var dataFrom2=db2.Query(sql,args);
因为源是连接,所以它自动以数据库为中心(注意,它可以很好地处理数据库之间的不同列顺序等)

或者换一种说法:StackExchange是多租户的,这意味着我们在同一个
AppDomain
中访问大量的数据库。StackExchange使用dapper,dapper完全是为处理这种情况而设计的



Disclamer我是dapper项目的一名贡献者,我想还有很多其他微型ORMs支持这个项目

它支持多个不同的DBMS吗?我想同时连接Oracle和SQL Server。