Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
亚音速3存储库-内存中的SQLite_Sqlite_Subsonic_Subsonic3_In Memory Database - Fatal编程技术网

亚音速3存储库-内存中的SQLite

亚音速3存储库-内存中的SQLite,sqlite,subsonic,subsonic3,in-memory-database,Sqlite,Subsonic,Subsonic3,In Memory Database,在我花时间修改亚音速3声源之前,我想问一下我是否遗漏了一些简单的东西 是否可以在SQLite内存数据库上使用亚音速3存储库进行迁移?我找不到一种方法来强制DbDataProvider保持连接打开,以便在连接关闭时内存中的SQLite数据库不会消失 我尝试的连接字符串的单元测试是 public class SQLite_InMemory_SimpleRepositoryTests { public class Job { public Guid JobId { ge

在我花时间修改亚音速3声源之前,我想问一下我是否遗漏了一些简单的东西

是否可以在SQLite内存数据库上使用亚音速3存储库进行迁移?我找不到一种方法来强制DbDataProvider保持连接打开,以便在连接关闭时内存中的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);
        }
    }
}
public类SQLite\u InMemory\u SimpleRepositoryTests
{
公开课工作
{
公共Guid作业ID{get;set;}
公共字符串JobName{get;set;}
}
[事实]
public void SQLite_InMemory_SimpleRepo_CanStayOpen()
{
IDataProvider provider=ProviderFactory.GetProvider(“数据源=:内存:;版本=3;新建=True;池=True;最大池大小=1;”,“System.Data.SQLite”);
IRepository repository=new SimpleRepository(提供程序,SimpleRepositoryOptions.RunMigrations);
对于(int i=0;i<10000;i++)
{
var job=new job{JobId=Guid.NewGuid(),JobName=“job_389;”+i};
添加(作业);
}
}
}
我尝试在IDataProvider上设置“共享连接”,但连接似乎仍然关闭

如果没有,我将更新亚音速声源,并提交更改


谢谢

有趣-不,除了创建一个静态IDataProvider之外,我想不出其他方法来实现这一点,但即使这样,我们也会关闭连接以执行标量等操作

我认为您可以通过实现IDataProvider,然后根据需要进行设置来创建这样一个东西——所有的执行都要经过它。但这让我想知道我们是否在调用代码中明确关闭了一些东西-这对我来说是一个糟糕的设计。。。嗯\


希望有此功能…

你好,罗布,谢谢你提供的信息。我跟踪了执行情况,并在几个地方调用了Close和Dispose。我打算在IDataProvider上实现一个名为bool issqllitemorydb()的扩展方法,该方法将检查连接字符串中的连接类型和:memory:,并覆盖disposes/closes。a应该在哪里发布代码?另外,只是要注意,我能够通过测试,但“很不礼貌”。我将重构代码并发布它。告诉我在哪里。谢谢。谢谢。迈克,我会发邮件的。