0

我正在尝试通过映射来设置带有 Nhibernate 代码的会话工厂,但是我在配置它时遇到了问题,而且通过与会话工厂的映射很难找到代码指南。

自动取款机。我有这个 SessionManager,但我不确定在哪里指定它的 MySQL 数据库,很容易错过更多。

public class SessionManager
{
    private const string ConnString = "Server=localhost; Port=3306; Database=test; Uid=root; Pwd=123456;";

    public static SessionManager CurrentInstance
    {
        get
        {
            if (_currentInstance == null)
            {
                object sync = new object();
                lock (sync)
                    _currentInstance = new SessionManager();
            }
            return _currentInstance;
        }
    }

    public static ISession Session
    {
        get
        {
            if (_sessionFactory == null)
            {
                object sync = new object();
                lock (sync)
                    _sessionFactory = new Configuration()
                        .DataBaseIntegration(x => x.ConnectionString = ConnString)
                        .Configure()
                        .AddAssembly(typeof(EmployeeMap).Assembly)
                        .BuildSessionFactory();
            }
            return _sessionFactory.OpenSession();
        }
    }

    private SessionManager() { }

    static SessionManager _currentInstance;
    static ISessionFactory _sessionFactory;
}
4

1 回答 1

1

我认为您要做的是指定您使用的是mysql。完成此操作后,我使用了一个 NHibernate 配置文件,其中有一行说明 driver_class:

<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>

试试这个教程

http://nhforge.org/wikis/howtonh/your-first-nhibernate-based-application.aspx

它描述了设置您的 nhibernate 会话的过程,并显示了一个示例 hibernate.cfg.xml 文件。在此设置中,您需要指定 MySqlDataDriver 而不是所示的 SQLServerCeDriver。

我不知道您是否可以在不必使用 hibernate.cfg.xml 的情况下做到这一点

于 2013-01-05T16:53:50.367 回答