0

SubSonic 3 のソースの修正に時間を費やす前に、何か単純なものが欠けているかどうかを確認するように依頼することにしました。

SubSonic 3 リポジトリを SQLite インメモリ データベースでの移行に使用することはできますか? 接続が閉じられたときにインメモリ SQLite データベースが消えないように、DbDataProvider に強制的に接続を開いたままにする方法が見つかりませんでした。

私が試していた接続文字列を使用した単体テストは...

public class SQLite_InMemory_SimpleRepositoryTests
{
    public class Job
    {
        public Guid JobId { get; set; }
        public string JobName { get; set; }
    }

    [Fact]
    public void SQLite_InMemory_SimpleRepo_CanStayOpen()
    {
        IDataProvider provider = ProviderFactory.GetProvider("Data Source=:memory:;Version=3;New=True;Pooling=True;Max Pool Size=1;", "System.Data.SQLite");
        IRepository repository = new SimpleRepository(provider, SimpleRepositoryOptions.RunMigrations);

        for (int i = 0; i < 10000; i++)
        {
            var job = new Job {JobId = Guid.NewGuid(), JobName = "Job_"+i};
            repository.Add(job);
        }
    }
}

IDataProvider で「共有接続」を設定しようとしましたが、接続はまだ閉じているようです。

そうでない場合は、SubSonic のソースを更新し、変更を送信します。

ありがとう!

4

1 に答える 1

2

興味深い - 静的な IDataProvider を作成する以外にこれを行う方法は考えられませんが、それでもスカラーなどを実行するために接続を閉じます。

IDataProvider を実装し、必要に応じて設定することで、そのようなものを作成できると思います-すべての実行はそれを通過します。しかし、これは、呼び出し元のコードで明示的にシャットダウンするかどうか疑問に思っています。これは、私の側では悪い設計になるでしょう... うーん。\

この機能があればいいのに…

于 2009-12-01T18:32:37.670 に答える