首页 > 解决方案 > Fluent NHibernate ISessionFactory 用于读取、写入和更新数据库

问题描述

对不起!我通过问简单的问题搞砸了。我有一个非常简单的 Store 对象,我将存储数据库、读取、更新等。它第一次工作正常,但如果我有当前会话工厂,读取也很好。现在,如果我重新打开我的示例应用程序以读取数据库,那么我就会看到问题所在。对于阅读,它使用相同的 InitializeSessionFactory(),因此我的数据库变为空。如何修改 InitializeSessionFactory() 使其独立地用于写入、更新和删除单个记录?

公共类 NHibernateHelper { 私有静态 ISessionFactory _sessionFactory;

private static ISessionFactory SessionFactory
{
    get
    {
        if (_sessionFactory == null)
            InitializeSessionFactory();
        return _sessionFactory;
    }
}

private static void InitializeSessionFactory()
{
    _sessionFactory = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql7.ConnectionString(@"Server=(local);initial catalog=MyDatabase; user=my_user_id;password=my_password;").ShowSql())
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Store>())
        .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
        .BuildSessionFactory();
}

public static ISession OpenSession()
{
    return SessionFactory.OpenSession();
}

}

标签: c#fluent-nhibernate

解决方案


我不是数据库专家,也不是 Fluent Nhibernate 的老手。在尝试和玩耍之后,我找到了这样的解决方案。所以我在滥用它。似乎它正在工作(虽然不确定是否有任何回归问题)

   //.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
  .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))

推荐阅读