Có, có thể và hỗ trợ cho việc này đã được tích hợp sẵn trong OrmLiteConnectionFactory
, hãy xem Ví dụ về phân đoạn Master SQLServer + Sqlite trên trang chủ dự án của OrmLite
.
Về cơ bản, bạn sẽ đăng ký mặc định của mình (hoặc kết nối chính) trước tiên với:
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI",
SqlServerDialect.Provider);
Sau đó, bạn sẽ đăng ký một kết nối được đặt tên cho mọi kết nối khác mà bạn muốn hỗ trợ, ví dụ:
dbFactory.RegisterConnection("shard-1",
"~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
SqliteDialect.Provider);
Khi đã được định cấu hình, việc mở một kết nối mà không chỉ định tên sẽ mở một kết nối đến cơ sở dữ liệu mặc định, ví dụ:
using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB
Trong khi bạn có thể chỉ định tên để mở một kết nối được đặt tên tới db với một nhà cung cấp khác, ví dụ:
using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB
Sử dụng thủ công các Nhà cung cấp phương ngữ khác nhau
Sự khác biệt giữa triển khai Trình cung cấp SQL giữa các RDBMS khác nhau được chứa trong mỗi trình cung cấp phương ngữ. Vì vậy, nếu bạn muốn sử dụng các phương thức mở rộng tiện lợi của OrmLite để chống lại việc triển khai nhà cung cấp ADO.NET cụ thể, bạn chỉ cần chỉ định ThreadStatic DialectProvider mà bạn muốn sử dụng, ví dụ:
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider
Về cơ bản đây là tất cả những gì RegisterConnection
trong OrmLiteConnectionFactory tự động thực hiện hậu trường cho bạn.
Để tham khảo, đây là tất cả các nhà cung cấp phương ngữ cho OrmLite cho đến thời điểm này:
- SqlServerDialect.Provider
- SqliteDialect.Provider (có sẵn các lần cấy 32/64 và Mono khác nhau)
- MySqlDialect.Provider
- PostgreSqlDialect.Provider
- OracleDialect.Provider
- FirebirdDialect.Provider