Я пытаюсь создать простое приложение, которое создаст базу данных на моем MS SQL Server с использованием необработанного SQL-запроса (я использую nHibernate 5.2.4). Обратите внимание, что я довольно плохо знаком с C #, поэтому приведенный ниже код предназначен только для целей обучения.
Я написал простой класс MsSqlSessionManager, который реализует методы для открытия / закрытия соединений.
public class MsSqlSessionManager : IDatabaseSessionManager
{
private ISession _session;
private readonly ISessionFactory _sessionFactory;
public MsSqlSessionManager(Configuration configuration)
{
_sessionFactory = configuration.BuildSessionFactory();
}
public ISession Open()
{
var session = _sessionFactory.OpenSession();
_session = session;
return session;
}
public void Close(ISession session)
{
_session.Close();
}
}
DatabaseManager использует MsSqlSessionManager для открытия сеанса и выполнения необработанных запросов. Первоначально этот класс будет отвечать за создание базы данных.
public class DatabaseManager : IDatabaseManager
{
private readonly IDatabaseSessionManager _sessionManager;
public DatabaseManager(IDatabaseSessionManager sessionManager)
{
_sessionManager = sessionManager;
}
public void Create()
{
using (var session = _sessionManager.Open())
{
session.CreateSQLQuery("create database test_db");
}
}
public void TestQuery()
{
using (var session = _sessionManager.Open())
{
var result = session.CreateSQLQuery("select * from lorem.dbo.ipsum")
.AddScalar("name", NHibernateUtil.String).List();
foreach (var item in result)
{
Console.WriteLine(item);
}
}
}
}
Теперь, если я вызову метод TestQuery (использует уже созданную базу данных), я получу правильные данные (поэтому configuration в порядке). Однако метод Create , похоже, не работает (и при этом не возвращает никакой ошибки). Я предполагаю, что запрос не выполняется, но я не могу найти способ сделать это.
Вопросы:
- Есть ли лучший способ создать базу данных программно ? Моя цель - использовать консольное приложение .net для его создания, и согласно этому посту нет встроенного способа сделать это.
- Как выполнить запрос в методе Create ?
Документация по nHibernate меня сильно подвела ...