0
我試圖用ReactiveX(更確切地說,Rx.Net)和SQLite.Net構建一個數據訪問層。ReactiveX:使Observable.Create()只被調用一次
工作的一部分是創建一個可觀察的數據庫連接,以便只在需要時纔可以打開它。這是我到目前爲止:
var connection = Observable.Create<SQLiteConnection>(observer =>
{
Debug.WriteLine("CheckInStore: Opening database connection");
var database = new SQLiteConnection(configuration.ConnectionString.DatabasePath);
observer.OnNext(database);
observer.OnCompleted();
return Disposable.Create(() =>
{
Debug.WriteLine("CheckInStore: Closing database connection");
database.Close();
});
});
// Further down the line, a query would look like this:
var objects = connection.SelectMany(db => db.Query<>("select * from MyTable"));
不幸的是,每當有人訂閱這個可觀察的,一個新的連接被創建。一旦訂閱被處置,它也會關閉。
我試過使用.Replay(1).RefCount()
,但它沒有改變任何東西。無論如何,我不確定要了解整個RefCount
的事情。
我該如何使這個數據庫連接成爲單例?