流利的nhibernate数据不会持续存在

时间:2012-03-27 08:02:11

标签: c# hibernate fluent-nhibernate

这是助手;

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?

1 个答案:

答案 0 :(得分:1)

看起来您不断重新创建数据库文件:

SchemaExport(cfg).Create(

在这里问到并解决了:

How do I configure FluentNHibernate to not overwrite an existing SQLite db file?

因此它会在应用会话中保持不变,但是一旦您重新启动应用(或者更准确地再次调用SchemaExport),就会重新创建数据库文件。