如何使用ServiceStack OrmLite加入或附加多个SQLite DB?

时间:2014-07-27 01:32:10

标签: c# sqlite ormlite-servicestack

优秀的ServiceStack OrmLite有很多功能。

我有一个场景,我有两个或更多单独的SQLite DB,如何使用OrmLite加入/附加它们?

我是否必须编写RAW SQL或者我可以使用哪些内置功能?

谢谢

1 个答案:

答案 0 :(得分:1)

OrmLite支持Multi-nested named connections,它允许您以不同的名称注册多个RDBMS连接,例如:

//Set default connection
var dbFactory = new OrmLiteConnectionFactory(
    "~/App_Data/db.sqlite".MapAbsolutePath(), SqliteDialect.Provider);

//Setup multiple named connections
dbFactory.RegisterConnection("db1", 
    "~/App_Data/db1.sqlite".MapAbsolutePath(), SqliteDialect.Provider);

dbFactory.RegisterConnection("db2", 
    "~/App_Data/db2.sqlite".MapAbsolutePath(), SqliteDialect.Provider);

然后,您可以使用注册名称访问每个Sqlite数据库。

由于Sqlite不支持跨数据库连接,因此您无法创建跨多个数据库的SQL查询,因此如果您想要合并两者的结果,则需要在代码中执行此操作,例如:

var results = new List<Table>();
using (var db1 = dbFactory.OpenDbConnection("db1"))
using (var db2 = dbFactory.OpenDbConnection("db2"))
{
    results.AddRange(db1.Select<Table>(q => q.Category = category));
    results.AddRange(db2.Select<Table>(q => q.Category = category));
}