Ya itu mungkin dan dukungan untuk ini sudah ada di OrmLiteConnectionFactory
, lihat Contoh Master SQLServer + Sqlite shard di halaman beranda proyek OrmLite
.
Pada dasarnya Anda akan mendaftarkan default . Anda (atau master) koneksi terlebih dahulu dengan:
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI",
SqlServerDialect.Provider);
Kemudian Anda akan mendaftarkan koneksi bernama untuk setiap koneksi lain yang ingin Anda dukung, mis:
dbFactory.RegisterConnection("shard-1",
"~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
SqliteDialect.Provider);
Setelah dikonfigurasi, membuka koneksi tanpa menentukan nama akan membuka koneksi ke database default, mis:
using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB
Sementara Anda dapat menentukan nama untuk membuka koneksi bernama ke db dengan penyedia yang berbeda, mis:
using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB
Gunakan Penyedia Dialek yang berbeda secara manual
Perbedaan antara implementasi Penyedia SQL antara RDBMS yang berbeda terkandung dalam setiap penyedia dialek. Jadi, jika Anda ingin menggunakan metode ekstensi kenyamanan OrmLite terhadap implementasi penyedia ADO.NET tertentu, Anda hanya perlu menetapkan ThreadStatic DialectProvider yang ingin Anda gunakan, mis:
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider
Ini pada dasarnya adalah apa RegisterConnection
di OrmLiteConnectionFactory secara otomatis melakukan di belakang layar untuk Anda.
Untuk referensi di sini adalah semua penyedia dialek untuk OrmLite hingga saat ini:
- SqlServerDialect.Provider
- SqliteDialect.Provider (berbeda 32/64 dan impls Mono tersedia)
- MySqlDialect.Provider
- PostgreSqlDialect.Provider
- OracleDialect.Provider
- FirebirdDialect.Provider