Wir haben eine App, die NHibernate/FluentNHibernate mit einem MsSqlConfiguration.MsSql2008.ConnectionString
auf unsere SQL-Umgebung hingewiesen. Der SQL-Server hat mehrere Datenbank und wir können wie so durch die Verwendung einer Konvention zu verschiedenen Datenbanken verbinden:Wie können Sie beim Testen von NHibernate mit einer SQLite In Memory-Konfiguration eine andere Datenbank erstellen?
public class FactseDatabaseConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
if (instance.EntityType.Namespace.EndsWith("Model.OtherEntities"))
{
instance.Schema("OtherDatabase.dbo");
}
}
}
Dies funktioniert und die richtigen Anfragen generiert werden, um die OtherDatabase
zugreifen. Das Problem tritt auf, wenn wir mit unserer SessionFactory einen SQLiteConfiguration.Standard.InMemory()
testen möchten. Die Persistenz Tests fehlschlagen, wenn SQLite bereitet:
System.Data.SQLite.SQLiteException : SQL logic error or missing database
unknown database OtherDatabase
Dies ist der Befehl es erzeugt:
create table OtherDatabse.dbo_my_other_entity_table (
Id UNIQUEIDENTIFIER not null,
... other properties
)
Gibt es eine Weise, die ich meine SQLiteConfiguration
es 2 Datenbanken und In-Memory erstellen haben, ändern kann, Wenn das so ist, wie? Oder sollte ich einfach eine separate Sitzung zum Testen dieser anderen Entitäten erstellen?
Dank @ jenson-button-event, kann dies funktionieren. Bevor Sie es versuchen, haben Sie irgendwelche Informationen, die Sie für die lokale SQL-Lösung freigeben können? Ich werde es vielleicht lieber versuchen. – shanabus
Es ist eine In-Memory-Edition von MSSQL Express 2012 für Entwickler erstellt. Hier ist ein [MSDN Blogeintrag] (http://blogs.msdn.com/b/sqlexpress/archive/2011/07/12/introducing-localdb-a-better-sql-express.aspx) darüber, und ein Link [MSSQL Express 2012 herunterladen] (http://msdn.microsoft.com/en-us/evalcenter/hh230763.aspx). Sie können es auch über ein MSDN-Abonnement erhalten, wenn Sie eines haben. Suchen Sie einfach nach LocalDB in den Downloads des MSDN-Abonnenten. –