Pergunta

Antes de investir o tempo em modificar a fonte subsônica 3, achei que peço para ver se estou perdendo algo simples.

É possível usar o repositório subsônico 3 com migrações em um banco de dados de memória sqlite? Não consegui encontrar uma maneira de forçar o DBDataProvider a manter a conexão aberta para que o banco de dados SQLite na memória não desapareça quando a conexão é fechada.

O teste de unidade com a sequência de conexão que eu estava tentando é ...

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);
        }
    }
}

Tentei definir a "conexão compartilhada" no idataprovider, mas a conexão ainda parecia fechar.

Caso contrário, atualizarei a fonte subsônica e enviarei as alterações.

Obrigado!

Foi útil?

Solução

Interessante - não, não há como pensar em fazer isso além de criar um idataprovider estático, mas mesmo assim fechamos a conexão por fazer coisas como executar o Scalar's etc.

Eu acho que você pode criar uma coisa dessas implementando o IDATAPROVider e configurar as coisas conforme necessário - toda a execução passa por ela. Mas isso está me fazendo pensar se desligamos explicitamente as coisas no código de chamada - o que seria um design ruim da minha parte ... hmmm.

Adoraria ter esse recurso ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top