Я пытаюсь использовать FluentNHibernate в своем тестовом проекте. Следующий код создает таблицы в существующей базе данных:
var sessionFactory = FluentNHibernate
.Cfg.Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2008.ConnectionString(
c => c.FromConnectionStringWithKey("DefaultConnection")))
.CurrentSessionContext("web")
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SqlCommandFactory>())
.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
.BuildSessionFactory();
Это работает, когда база данных уже существует. Но как создать базу данных, если ее нет? Строка подключения к базе данных выглядит следующим образом:
Источник данных = MAIN \ SQLEXPRESS; Начальный каталог = Magazine; Integrated Security = True; Время ожидания подключения = 15; Encrypt = False; TrustServerCertificate = True; ApplicationIntent = ReadWrite; MultiSubnetFailover = False
Также я пытаюсь использовать другой метод. Показано ниже.
new SchemaExport(cfg).Execute(true, true, false)
В этом случае я получаю другое исключение.
System.Data.SqlClient.SqlException: не удается открыть базу данных «Журнал», запрошенную при входе в систему. Не удалось войти в систему.
Меняю строку подключения.
Источник данных = (LocalDb) \ v11.0; AttachDbFilename = | DataDirectory | \ Magazine.mdf; Начальный каталог = Magazine; Integrated Security = True
В моем случае LocalDb был бы лучшим вариантом. Но, как и в первом случае с SQLEXPRESS, я снова получил исключение.
System.Data.SqlClient.SqlException: невозможно прикрепить файл «..... \ App_Data \ Magazine.mdf» как базу данных «Журнал».
Я использовал Code First для EF раньше и EF создает базу данных, если она отсутствует. Как я могу создать базу данных с помощью FluentNHibernate?