我正在尝试构建一个简单的应用程序,它将使用原始sql查询(我使用的是nhibernate 5.2.4)在ms sql server中创建一个数据库。请注意,我对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();
}
}
这个
数据库管理器
使用
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);
}
}
}
}
现在如果我打电话
测试查询
方法(使用已经创建的数据库),我实际上得到了正确的数据(所以
配置
没关系。然而,
创造
方法似乎不起作用(也不返回任何错误)。我假设查询没有执行,但我找不到任何方法来执行。
问题是:
-
有没有更好的方法来创建数据库
程序化
?我的目标是使用.NET控制台应用程序创建它,并根据
this post
没有内置的方法可以做到这一点。
-
如何在中执行查询
创造
方法?
尼伯纳的文件让我很失望…