Mik*_*keT 14 sql-server oracle11g ormlite-servicestack
我正在围绕servicestack框架构建一个应用程序,并且需要能够访问Oracle和MS Sql Server中的数据.这可能是使用ORMLite,似乎我只能为App设置一个方言或者我错过了什么?
myt*_*thz 15
是的,有可能并且已经内置了对此的支持OrmLiteConnectionFactory,请参阅OrmLite项目主页上的Master SQLServer + Sqlite分片示例.
基本上,您将首先注册默认(或主)连接:
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI",
SqlServerDialect.Provider);
Run Code Online (Sandbox Code Playgroud)
然后,您将为您希望支持的每个其他连接注册一个命名连接,例如:
dbFactory.RegisterConnection("shard-1",
"~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
SqliteDialect.Provider);
Run Code Online (Sandbox Code Playgroud)
配置完成后,打开连接而不指定名称将打开与默认数据库的连接,例如:
using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB
Run Code Online (Sandbox Code Playgroud)
您可以指定一个名称来打开与具有不同提供者的数据库的命名连接,例如:
using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB
Run Code Online (Sandbox Code Playgroud)
不同RDBMS之间的SQL Provider实现之间的差异包含在每个方言提供程序中.因此,如果您想对特定的ADO.NET提供程序实现使用OrmLite的便捷扩展方法,您只需要分配您希望使用的ThreadStatic DialectProvider,例如:
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider
Run Code Online (Sandbox Code Playgroud)
这基本上就是RegisterConnectionOrmLiteConnectionFactory在幕后为您自动完成的所有操作.
在这里参考OrmLite的所有方言提供者到目前为止:
| 归档时间: |
|
| 查看次数: |
4095 次 |
| 最近记录: |