NServiceBus 5.2 Hibernate 流畅映射
NServiceBus 5.2 Nhibernate fluent mapping
请帮忙?我的 NServiceBus 端点是:
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);
}
}
我得到的错误是:"ERROR NServiceBus.GenericHost Exception when starting endpoint. System.InvalidOperationException: No NHibernate properties found in your config"。根据文档,我需要使用 busConfiguration.UsePersistence<NHibernatePersistence>().RegisterManagedSessionInTheContainer();
。在处理程序中获取 public ISession Session { get; set; }
。如何使流畅的映射工作?非常感谢任何帮助。
我终于明白了万岁!
关键是 NServiceBus 5.2 语法的变化
不确定这是否是最好的方法,但它确实有效。
端点配置现在看起来像这样。
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>();
}
}
请帮忙?我的 NServiceBus 端点是:
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);
}
}
我得到的错误是:"ERROR NServiceBus.GenericHost Exception when starting endpoint. System.InvalidOperationException: No NHibernate properties found in your config"。根据文档,我需要使用 busConfiguration.UsePersistence<NHibernatePersistence>().RegisterManagedSessionInTheContainer();
。在处理程序中获取 public ISession Session { get; set; }
。如何使流畅的映射工作?非常感谢任何帮助。
我终于明白了万岁! 关键是 NServiceBus 5.2 语法的变化 不确定这是否是最好的方法,但它确实有效。 端点配置现在看起来像这样。
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>();
}
}