// Ustawia integrację z bazą danych MSSQL na podstawie connection string. private void SetDatabaseIntegration(MsSqlConnectionString connectionString) { this.DataBaseIntegration(db => { db.ConnectionString = connectionString.Value; db.Dialect <MsSql2012Dialect>(); db.Driver <SqlClientDriver>(); }); }
// Tworzy nową bazę danych i zwraca do niej connection string. // Nie znalazłem sposobu na stworzenie bazy danych od zera za pomocą nHibernate w inny sposób niż wykonanie surowego SQL. public static void Create(string serverInstance, string dbName) { // Stwórz bazę danych. var connectionString = new MsSqlConnectionString(serverInstance); var dbManager = new MsSqlDatabaseManager(connectionString); dbManager.Execute($@"create database [{dbName}]"); // wiem że to się aż prosi o SQL Injection, ale nHibernate nie udostępnia paramterów dla DDL, a to polecenie będzie dostępne tylko z poziomu CLI... // Załaduj schemat do bazy danych. var newDatabaseConnectionString = new MsSqlConnectionString(serverInstance, dbName); new MsSqlDatabaseManager(newDatabaseConnectionString).SetupSchema(); Logger.Log($"Database {dbName} created successfully."); AppConfigManager.SetConnectionString(newDatabaseConnectionString); }
// Przeciążenie konstruktora używające domyślnej nazwy dokumentu mapującego. public MsSqlConfiguration(MsSqlConnectionString connectionString, HbmMapping compiledModels) : this(connectionString, compiledModels, "default") { }
// Tworzy konkretną konfigurację MSSQL dla nHibernate public MsSqlConfiguration(MsSqlConnectionString connectionString, HbmMapping compiledModels, string mappingDocumentFileName) { SetDatabaseIntegration(connectionString); SetModelMappings(compiledModels, mappingDocumentFileName); }
public MsSqlDatabaseManager(MsSqlConnectionString connectionString) { _models = MappingCompiler.CompileModels(); _configuration = new MsSqlConfiguration(connectionString, _models); _sessionManager = new SessionManager(_configuration); }