Смешивание конфигурации БД из файла с отображением Fluent NHibernate - PullRequest
3 голосов
/ 19 мая 2011

Я наткнулся на следующую проблему: я хотел настроить БД из конфигурационного файла, но сопоставления бегло (очень нравится!) Код конфигурации выглядит следующим образом:

var cfg = new Configuration();
cfg.Configure();
var fluentCfg = Fluently.Configure(cfg)
                        .Mappings(
                            m => m
                               .FluentMapping
                               .AddFromAssembly(Assembly.GetExecutingAssembly));

Однако файл конфигурации имеет свойство:

<property name="proxyfactory.factory_class">
  NHibernate.ByteCode.LinFu.ProxyFactoryFactory, 
  NHibernate.ByteCode.LinFu
</property>

и после cfg.Configure (); все выглядит хорошо, конфигурация указывает поставщику байт-кода LinFu, НО после третьей строки я вижу, что конфигурация изменена на использование Castle. Я посмотрел код Fluent и могу ошибаться, но похоже, что они переопределяют это свойство в PersistenceConfiguration.cs (строка 50) в конструкторе PersistenceConfiguration:

values[ProxyFactoryFactoryClassKey] =  DefaultProxyFactoryFactoryClassName;

Свободно ли требуется Замок? Или, может быть, я что-то не так делаю, или это просто ошибка?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 19 мая 2011

Есть метод ProxyFactoryFactory, связанный с Configure.

Fluently.Configure()
  .ProxyFactoryFactory(name);

Если вы не используете 1.2, я считаю, что он находится под вызовом Database (см. Ответ RexM).

0 голосов
/ 19 мая 2011

Я не знаю, если это то, что вы ищете, но это может помочь вам. Вы можете выставить конфигурацию и внести любые необходимые изменения в код.

var cfg = Fluently.Configure()
                .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("ConnectionStringName")).ShowSql())
                .Mappings(m =>
                {
                    m.FluentMappings.AddFromAssemblyOf<MapMarker>();
                    m.FluentMappings.Conventions.AddFromAssemblyOf<ConventionMarker>();
                })
                .ExposeConfiguration(x => x.SetProperty("proxyfactory.factory_class", "NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...