Да, възможно е и поддръжката за това вече е вградена в OrmLiteConnectionFactory
, вижте Пример за главния SQLServer + Sqlite на началната страница на проекта на OrmLite
.
По принцип бихте регистрирали своя по подразбиране (или главна) връзка първо с:
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI",
SqlServerDialect.Provider);
Тогава ще регистрирате наименувана връзка за всяка друга връзка, която искате да поддържате, напр.:
dbFactory.RegisterConnection("shard-1",
"~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
SqliteDialect.Provider);
След като това бъде конфигурирано, отварянето на връзка без посочване на име ще отвори връзка към базата данни по подразбиране, напр.:
using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB
Докато можете да посочите име, за да отворите наименувана връзка към db с различен доставчик, напр.:
using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB
Ръчно използване на различни доставчици на диалекти
Разликите между реализациите на SQL Provider между различните RDBMS се съдържат във всеки доставчик на диалект. Така че, ако искате да използвате методите за разширение за удобство на OrmLite срещу конкретна реализация на ADO.NET доставчик, просто трябва да зададете ThreadStatic DialectProvider, който искате да използвате, напр.:
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider
По същество това е всичко, което RegisterConnection
в OrmLiteConnectionFactory автоматично прави зад кулисите вместо вас.
За справка тук са всички доставчици на диалекти за OrmLite до този момент:
- SqlServerDialect.Provider
- SqliteDialect.Provider (налични са различни 32/64 и Mono impls)
- MySqlDialect.Provider
- PostgreSqlDialect.Provider
- OracleDialect.Provider
- FirebirdDialect.Provider