2015-06-04 3 views
1

Пожалуйста, помогите? Моя NServiceBus конечная точка:NServiceBus 5.2 Свободное картографирование Nhibernate

public class EndpointConfig : IConfigureThisEndpoint 
{ 
    public void Customize(BusConfiguration busConfiguration) 
    { 
     var windsorContainer = new WindsorContainer(); 
     windsorContainer.Install(new IocInstaller()); 

     busConfiguration.UseContainer<WindsorBuilder>(x => x.ExistingContainer(windsorContainer)); 

     var nhConfiguration = new NHibernate.Cfg.Configuration(); 
     nhConfiguration.Properties["connection.provider"] = "NHibernate.Connection.DriverConnectionProvider"; 
     nhConfiguration.Properties["connection.driver_class"] = "NHibernate.Driver.Sql2008ClientDriver"; 
     nhConfiguration.Properties["dialect"] = "NHibernate.Dialect.MsSql2008Dialect"; 
     nhConfiguration.GetClassMapping(typeof(ProductAchievementMap)); 

     busConfiguration.UsePersistence<NHibernatePersistence>().UseConfiguration(nhConfiguration); 

     busConfiguration.UseSerialization<XmlSerializer>(); 
    } 
} 

Мой обработчик:

public class ProductAchievementAuditCommandHandler : IHandleMessages<ProductAchievementAuditCommand> 
{ 
    public ISession Session { get; set; } 

    public void Handle(ProductAchievementAuditCommand message) 
    { 
     var productAchievementAudit = new ProductAchievement 
     { 
      Id = Guid.NewGuid(), 
      SapComId = message.SapComId, 
      MessageId = message.MessageId 
     }; 

     Session.Save(productAchievementAudit); 
    } 
} 

Мой свободно отображение:

public class ProductAchievementMap : ClassMap<ProductAchievement> 
{ 
    public ProductAchievementMap() 
    { 
     Table("ProductAchievementMessage"); 
     Id(x => x.Id); 
     Map(x => x.SapComId); 
     Map(x => x.MessageId); 
    } 
} 

Ошибка я получаю: "ОШИБКА NServiceBus.GenericHost Исключение при начальная конечная точка. System.InvalidOperationException: нет свойств NHibernate, найденных в вашей конфигурации ". Согласно документации, мне нужно использовать busConfiguration.UsePersistence<NHibernatePersistence>().RegisterManagedSessionInTheContainer();. Получить public ISession Session { get; set; } в обработчике. Как я могу использовать текущее отображение? Любая помощь очень ценится.

ответ

3

Я, наконец, понял это HOORAY !! Ключ заключается в изменении синтаксиса в NServiceBus 5.2 Не уверен, что это лучший способ, но он работает. Конфигурация Endpoint теперь выглядит следующим образом.

public class EndpointConfig : IConfigureThisEndpoint 
{ 
    public void Customize(BusConfiguration busConfiguration) 
    { 
     var nhConfiguration = new Configuration(); 
     nhConfiguration.Properties["connection.provider"] = "NHibernate.Connection.DriverConnectionProvider"; 
     nhConfiguration.Properties["connection.driver_class"] = "NHibernate.Driver.Sql2008ClientDriver"; 
     nhConfiguration.Properties["dialect"] = "NHibernate.Dialect.MsSql2008Dialect"; 
     nhConfiguration.Properties["connection.connection_string"] = @"Data Source=SQL_DEV\DEVELOPMENT;Initial Catalog=SPM.Auditlog;Integrated Security=True"; 

     var newConfig = Fluently.Configure(nhConfiguration) 
      .Mappings(x => { 
           x.FluentMappings.AddFromAssemblyOf<ProductAchievementMap>(); 
          }).BuildConfiguration(); 

     busConfiguration.UsePersistence<NHibernatePersistence>().UseConfiguration(newConfig); 
     busConfiguration.UsePersistence<NHibernatePersistence>().RegisterManagedSessionInTheContainer(); 

     var windsorContainer = new WindsorContainer(); 
     windsorContainer.Install(new IocInstaller()); 

     busConfiguration.UseContainer<WindsorBuilder>(x => x.ExistingContainer(windsorContainer)); 

     busConfiguration.UseSerialization<XmlSerializer>(); 
    } 
} 
+0

Congrats. Можете ли вы пометить его как ответ? –

+0

Sure np благодарит запомнить мне. – Jake

+0

Спасибо большое! Максимум –

Смежные вопросы