这是助手;
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
InitSessionFactory();
return _sessionFactory;
}
}
private static void InitSessionFactory()
{
_sessionFactory =
Fluently.Configure().Database(
MsSqlConfiguration.MsSql2008.ConnectionString(
"ConnectionString").ShowSql).
Mappings(m => m.FluentMappings.AddFromAssemblyOf<Category>()).ExposeConfiguration(
cfg => new SchemaExport(cfg).Create(true, true)).BuildSessionFactory();
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
下面的代码是存储数据的代码:
using(var session = NHibernateHelper.OpenSession())
{
using (var tx = session.BeginTransaction())
{
session.Save(category);
tx.Commit();
}
}
我的问题是,当我运行此代码并刷新数据库时,我看到数据正在通过。
当我重新启动应用程序时,数据消失了。
如何将数据保存到db?
答案 0 :(得分:1)
看起来您不断重新创建数据库文件:
SchemaExport(cfg).Create(
在这里问到并解决了:
How do I configure FluentNHibernate to not overwrite an existing SQLite db file?
因此它会在应用会话中保持不变,但是一旦您重新启动应用(或者更准确地再次调用SchemaExport
),就会重新创建数据库文件。