微小的ORM,支持同一项目中的多个数据库?

时间:2011-09-15 08:02:08

标签: c# .net

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

如果输入ORM并且可以生成所有实体,那将会很棒。

1 个答案:

答案 0 :(得分:2)

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

身份缓存将连接字符串作为身份的一部分。这意味着您可以获得所有查询的出色性能,因为缓存了materializer和param提取程序,但缓存是按db进行的。缓存对数据库架构更改也具有弹性。

Dapper与POCO和/或动态一起工作,您可以选择。 Dapper.Contrib包含一些可以使UPDATEINSERT等等更简单的助手。

这里唯一需要注意的是它不会为你生成实体。你需要自己的代码才能做到这一点。

举一个基本的例子:

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

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

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

或者换句话说:StackExchange是多租户,这意味着我们会在同一AppDomain内与 lot 数据库进行对话。 StackExchange使用dapper,dapper完全设计用于处理这种情况。


Disclamer 我是dapper项目的贡献者,我想其他很多微ORM支持这个