anon
anon

Reputation:

Can I use NHibernate.Cfg.Configuration in Fluent-NHibernate when building a session factory?

I want to use the NHibernate configuration for FluentNhibernate when building a session.

This how I am constructing my factory session:

lock (_factorylock)
            {
                if (_factory == null)
                {
                    nHibernateConfig = delegate
                    {
                         GetConfiguration();
                    };
                    nHibernateConfig.Invoke(GetConfiguration());

                    var cfg = Fluently.Configure().
                     Database(MsSqlConfiguration.MsSql2012)
                     .ExposeConfiguration( nHibernateConfig)
                      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserMap>());

                    _factory = cfg.BuildSessionFactory();

                }
            }

I am not sure about the delegate that I am using as well as the invoke method that I am calling there.

The method GetConfiguration looks like this:

  private static NHibernate.Cfg.Configuration GetConfiguration()
        {
            var configuration = new NHibernate.Cfg.Configuration();

            var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
            var configFile = Directory.GetFiles(baseDirectory, ConfigFile, SearchOption.AllDirectories).FirstOrDefault();
            return configuration.Configure(configFile);
        }

and of course, I have the xml config that contains a connection string:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="dialect">NHibernate.Dialect.MsSql2012Dialect, NHibernate</property>
    <property name="connection.connection_string">Database=authentication; Port=3306; Server=127.0.0.1; Uid=root; Pwd=; persistsecurityinfo=True;SslMode=none </property>
    <property name="adonet.batch_size">100</property>
  </session-factory>
</hibernate-configuration>

Upvotes: 0

Views: 49

Answers (1)

MyScooter
MyScooter

Reputation: 21

Figured it out.

There is no need for the delege and the GetConfiguration method.

All that I had to do was to insatiate the configuration object

  var configuration = new Configuration();
                    configuration.Configure();

                    var cfg = Fluently.Configure(configuration)
                      .Mappings(m => m.FluentMappings.AddFromAssemblyOf<UserMap>());

                    _factory = cfg.BuildSessionFactory();

worked like a charm and my code is a lot cleaner.

Upvotes: 1

Related Questions