Avant d'investir du temps dans la modification de la source SubSonic 3, j'ai pensé que je demandais s'il me manquait quelque chose de simple.Référentiel SubSonic 3 - SQLite In-Memory
Est-il possible d'utiliser le référentiel SubSonic 3 avec des migrations sur une base de données SQLite In-Memory? Je ne pouvais pas trouver un moyen de forcer le DbDataProvider à garder la connexion ouverte afin que la base de données In-Memory SQLite ne disparaisse pas lorsque la connexion est fermée.
Le test unitaire avec la chaîne de connexion je tentais est ...
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);
}
}
}
J'ai essayé le réglage de la « connexion partagée » sur le IDataProvider, mais la connexion semblait encore fermer.
Sinon, je mettrai à jour la source SubSonic et soumettrai les changements.
Merci!
Salut Rob,. Merci pour l'info. J'ai fait une trace sur l'exécution et appelle Close et Dispose dans quelques endroits. J'allais implémenter une méthode d'extension sur le IDataProvider appelée bool IsSqlLiteMemoryDb() qui vérifierait le type de connexion et: memory: dans la chaîne de connexion et remplacerait les disposes/se ferme. Où devrait-on poster le code? –
Aussi, juste pour noter, j'ai été en mesure d'obtenir le test à passer, mais «hackishly». Je vais refactoriser le code et le poster. Faites-moi juste savoir où. Merci. –
Je présume ici ?: http://github.com/subsonic/SubSonic-3.0 – Mike