servicestack mysql_sql-server – 具有多个数据库服务器的ServiceStack OrmLite

博客内容介绍了如何使用OrmLiteConnectionFactory注册和管理默认及命名的数据库连接,支持多个数据库如SQLite和SQL Server。通过注册不同的方言提供者,可以在不同RDBMS之间切换,实现无缝数据库操作。
摘要由CSDN通过智能技术生成

是的,这是可能的,并且对OrmLiteConnectionFactory已经内置了这一点,参见

Master SQLServer + Sqlite shard example on OrmLite’s project home page.

基本上您将首先注册您的默认(或主)连接:

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

虽然您可以指定一个名称来打开与不同提供程序的数据库的命名连接,例如:

using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB

手动使用不同的方言提供者

不同RDBMS之间的sql Provider实现之间的差异包含在每个方言提供者中.因此,如果要针对特定​​的ADO.NET提供程序实现使用OrmLite的方便扩展方法,则只需要分配您希望使用的ThreadStatic DialectProvider,例如:

OrmLiteConfig.DialectProvider = sqlServerDialect.Provider;

var dbConn = new sqlConnection(sqlServerConnString);

dbConn.Select

这本质上是OrmLiteConnectionFactory中的RegisterConnection在你自己的幕后自动执行的.

这里提供的是OrmLite的所有方言提供者,直至此为止:

> sqlServerDialect.Provider> sqliteDialect.Provider(不同的32/64和Mono impls可用)> MysqLDialect.Provider> PostgresqlDialect.Provider> OracleDialect.Provider> FirebirdDialect.Provider

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值