2013-03-25 55 views
3

從文檔中給出以下OrmLite配置,爲每個命名連接配置ConnectionFilter的最佳方法是什麼?爲命名連接配置ConnectionFilter

var dbFactory = new OrmLiteConnectionFactory(
    "Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI", //Connection String 
    SqlServerDialect.Provider); 

dbFactory.Run(db => db.CreateTable<MasterRecord>(overwrite:false)); 

NoOfShards.Times(i => { 
    var namedShard = "robots-shard" + i; 
    dbFactory.RegisterConnection(namedShard, 
     "~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),    //Connection String 
     SqliteDialect.Provider); 

    dbFactory.OpenDbConnection(namedShard).Run(db => db.CreateTable<Robot>(overwrite:false)); 
}); 

目前,我正在使用這個而不是RegisterConnection。

OrmLiteConnectionFactory.NamedConnections[namedShard] = new OrmLiteConnectionFactory("~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(), true, SqliteDialect.Provider, true) { 
     ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current) 
    }; 

我們能否改變RegisterConnection爲類似

public void RegisterConnection(string connectionKey, string connectionString, IOrmLiteDialectProvider dialectProvider, bool autoDisposeConnection = true) 
    { 
     RegisterConnection(connectionKey, new OrmLiteConnectionFactory(connectionString, autoDisposeConnection, dialectProvider, autoDisposeConnection)); 
    } 

    public void RegisterConnection(string connectionKey, OrmLiteConnectionFactory ormLiteConnectionFactory) 
    { 
     NamedConnections[connectionKey] = ormLiteConnectionFactory; 
    } 

回答

3

提交了一個補丁來ServiceStack.OrmLite。 https://github.com/ServiceStack/ServiceStack.OrmLite/pull/212

+1

和t'很受歡迎:) – mythz 2013-03-28 21:22:51

+1

@mythz有時我很難決定是否應該在這裏或在github問題上發帖:) – jeffgabhart 2013-03-28 21:30:23

+0

如果你不確定是否真的問題最好在這裏發佈,否則如果您在GitHub問題上驗證了這是一個真正的問題,並且可重複的失敗測試。 – mythz 2013-03-28 21:58:58