0

在我花时间修改 SubSonic 3 源之前,我想我想看看我是否遗漏了一些简单的东西。

是否可以在 SQLite In-Memory 数据库上使用 SubSonic 3 存储库进行迁移?我找不到强制 DbDataProvider 保持连接打开的方法,因此当连接关闭时 In-Memory SQLite 数据库不会消失。

我正在尝试的连接字符串的单元测试是......

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 回答