Nous avons une application qui utilise NHibernate/FluentNHibernate avec un MsSqlConfiguration.MsSql2008.ConnectionString
pointé à notre environnement SQL. Les serveurs SQL ont plusieurs bases de données et nous pouvons connecter à différentes bases de données en utilisant une convention comme ceci:Lors du test de NHibernate avec une configuration SQLite en mémoire, comment créer une autre base de données?
public class FactseDatabaseConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
if (instance.EntityType.Namespace.EndsWith("Model.OtherEntities"))
{
instance.Schema("OtherDatabase.dbo");
}
}
}
Cela fonctionne et les requêtes correctes sont générées pour accéder au OtherDatabase
. Le problème vient quand nous voulons tester en utilisant un SQLiteConfiguration.Standard.InMemory()
avec notre SessionFactory. Les tests de persistance échouent lorsque SQLite prépare:
System.Data.SQLite.SQLiteException : SQL logic error or missing database
unknown database OtherDatabase
Ceci est la commande qu'il génère:
create table OtherDatabse.dbo_my_other_entity_table (
Id UNIQUEIDENTIFIER not null,
... other properties
)
Est-il possible que je peux changer mon SQLiteConfiguration
pour l'avoir créer deux bases de données en mémoire et, si c'est le cas, comment? Ou devrais-je simplement créer une session séparée pour tester ces autres entités?
Merci @ jenson-button-event, cela peut fonctionner. Avant de l'essayer, avez-vous des informations à partager sur la solution SQL locale? Je peux préférer essayer ça. – shanabus
C'est une édition en mémoire de MSSQL Express 2012 créée pour les développeurs. Voici une [entrée de blog MSDN] (http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx) à ce sujet, et un lien à [télécharger MSSQL Express 2012] (http://msdn.microsoft.com/en-us/evalcenter/hh230763.aspx). Vous pouvez également l'obtenir via un abonnement MSDN si vous en avez un. Il suffit de rechercher LocalDB dans les téléchargements de l'abonné MSDN. –