如何使用ServiceStack OrmLite连接或附加多个SQLite数据库?

本文关键字:SQLite 数据库 ServiceStack 何使用 OrmLite 连接 | 更新日期: 2023-09-27 18:14:57

优秀的ServiceStack OrmLite有大量的特性。

我有一个场景,我有两个或多个独立的SQLite数据库,我如何使用OrmLite加入/附加它们?

我必须写RAW SQL还是有任何内置的功能,我可以使用?

谢谢

如何使用ServiceStack OrmLite连接或附加多个SQLite数据库?

OrmLite支持多嵌套命名连接,允许您以不同的名称注册多个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));
}