2015-01-19 2 views
0

Мы использовали NServiceBus с RavenDB как Persistance.Ошибка сопоставления после переключения на SQL Server в NServicebus 5

Теперь мы хотим изменить это на SQL Server. Поэтому, согласно документации, я изменил Persistance на NHibernatePersistence. Теперь я получаю следующее сообщение об ошибке:

An association from the table MyInstanceOrderSagaData refers to an unmapped class: My.Domain.Business.Order

Конфигурация это: [код]

public class EndpointConfig : IConfigureThisEndpoint 
    { 
     public void Customize(BusConfiguration configuration) 
     { 
      configuration.EndpointName(ConfigurationManager.AppSettings["ServiceBusEndpointName"]); 
      configuration.UseTransport<MsmqTransport>(); 
      configuration.UseSerialization<JsonSerializer>(); 
      configuration.UsePersistence<NHibernatePersistence>(); 
     } 
    } 

[app.config]

<appSettings> 
    <add key="ServiceBusEndpointName" value="MyOrdering.Saga" /> 
    <add key="NServiceBus/Persistence/NHibernate/dialect" value="NHibernate.Dialect.MsSql2012Dialect" /> 
    </appSettings> 
+1

Вы определили свои NH-сопоставления, чтобы отобразить типы саги в NH? –

+0

@MauroServienti вам не нужно создавать явные сопоставления, так как он использует сопоставление типа NH по умолчанию. –

ответ

0

Вы должны помнить, что использование NHibernate ПЕРСИСТЕНТНОСТЬ динамические сопоставления для ваших классов данных Saga. Поэтому обычные вещи применяются, как и все члены должны быть виртуальными, все классы должны иметь свойство Id типа int и т. Д.

Что касается вашего исключения, я мог видеть, что ваши данные Saga содержат свойство типа, которое является вашим типом My.Domain.Business.Order. Этот класс не отображается в NServiceBus NHibernate SessionFactory. Я бы в значительной степени избегал любых связанных с бизнесом ссылок в ваших данных Saga. Я предлагаю вам создать класс DTO для хранения данных вашего заказа и изменить класс SagaData, чтобы использовать его вместо этого.

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