我正在尝试构建一个简单的应用程序,它将使用原始sql查询在MS SQL Server中创建一个数据库(我正在使用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 可以)。但是,创建方法似乎无效(也不返回任何错误)。我假设该查询未执行,但找不到任何方法。
问题是:
nHibernate的文档让我很难过...