支持同一项目中的多个数据库的小型ORM

本文关键字:数据库 小型 ORM 支持 项目 | 更新日期: 2023-09-27 18:08:34

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

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

支持同一项目中的多个数据库的小型ORM

Dapper支持这种开箱即用的方式。

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;
}

标识缓存将连接字符串作为标识的一部分。这意味着您可以获得所有查询的出色性能,因为物化器和参数提取器是缓存的,但缓存是按数据库进行的。缓存还可以适应数据库模式的更改。

Dapper使用poco和/或动态,你可以选择。衣冠楚楚的。Contrib包含一些帮助程序,可以使UPDATE, INSERT等更简单。

这里唯一的警告是它不会为您生成实体。你需要自己的代码来完成。

给一个基本的例子:

DbConnection db1 = ...
DbConnection db2 = ...
var dataFrom1 = db1.Query<Order>(sql, args);
var dataFrom2 = db2.Query<Order>(sql, args);

因为原点是连接,所以这是自动以数据库为中心的(注意,它可以很好地处理数据库之间不同的列顺序等)。

或者换一种方式:StackExchange是多租户的,这意味着我们与同一AppDomain内的数据库的lots对话。StackExchange使用dapper,而dapper完全是为处理这种情况而设计的。


免责声明我是dapper项目的贡献者,我想有很多其他的Micro orm支持这个