I'm using NServicebus 
<http://docs.particular.net/nservicebus/relational-persistence-using-nhibernate>which
 
has an option to store some state in a relational db using NH.

However, when I run the app I get this error:

*"Could not determine type for: Contracts.Registration.TenancyId, 
Contracts, for columns: NHibernate.Mapping.Column(Id)"*

Stacktrace:
   at NHibernate.Mapping.SimpleValue.get_Type()
   at 
NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.CreateIdentifierProperty(HbmId 
idSchema, PersistentClass rootClass, SimpleValue id)
   at NHibernate.Cfg.XmlHbmBinding.ClassIdBinder.BindId(HbmId idSchema, 
PersistentClass rootClass, Table table)
   at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(HbmClass 
classSchema, IDictionary`2 inheritedMetas)
   at 
NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(HbmClass 
rootClass, IDictionary`2 inheritedMetas)
   at 
NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddEntitiesMappings(HbmMapping 
mappingSchema, IDictionary`2 inheritedMetas)
   at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(HbmMapping 
mappingSchema)
   at NHibernate.Cfg.Configuration.AddDeserializedMapping(HbmMapping 
mappingDocument, String documentFileName)

[DataContract(Namespace = "Contracts.Registration")]
public partial class TenancyId : IIdentity
{
    [DataMember(Order = 1)]
public virtual Guid Id { get; set; }
    
    public TenancyId () {}
    public TenancyId (Guid id)
    {
        Id = id;
    }
    ...
}

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class xmlns="urn:nhibernate-mapping-2.2" 
name="Contracts.Registration.TenancyId, Contracts, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null" table="`TenancyId`">
    <id name="Id" type="System.Guid, mscorlib, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="Id" />
      <generator class="guid.comb" />
    </id>
  </class>
</hibernate-mapping>

Here is a class using the 'TenancyId' property

public class CustomerRegistrationSagaData : IContainSagaData
{
public virtual Guid Id { get; set; }
public virtual string Originator { get; set; }
public virtual string OriginalMessageId { get; set; }

*[Unique]*
*public virtual TenancyId TenancyId { get; set; }*
...
}

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class xmlns="urn:nhibernate-mapping-2.2" 
name="SagaProcessing.Registration.CustomerRegistrationSagaData, 
SagaProcessing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
table="`CustomerRegistrationSagaData`">
    <id name="Id" type="System.Guid, mscorlib, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="Id" />
      <generator class="guid.comb" />
    </id>
    <property name="Originator" type="System.String, mscorlib, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="Originator" />
    </property>
    <property name="OriginalMessageId" type="System.String, mscorlib, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <column name="OriginalMessageId" />
    </property>
   * <many-to-one class="Contracts.Registration.TenancyId, Contracts, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="TenancyId">*
*      <column name="TenancyId_id" />*
*    </many-to-one>*
    ...
  </class>
</hibernate-mapping>

And the EndpointConfig in NServicebus, if that helps.

public class EndpointConfig : IConfigureThisEndpoint, AsA_Worker
{
public void Customize(BusConfiguration configuration)
{
LogManager.Use<NLogFactory>();

string endpointName = GetType().Namespace;
configuration.EndpointName(endpointName);

configuration.AssembliesToScan(AllAssemblies.Except("SagaProcessing.vshost.exe"));

configuration.Conventions().DefiningEventsAs(t => typeof 
(IDomainEvent).IsAssignableFrom(t));
configuration.Conventions().DefiningMessagesAs(t => typeof 
(IDomainMessage).IsAssignableFrom(t));
configuration.Conventions().DefiningCommandsAs(t => typeof 
(IDomainCommand).IsAssignableFrom(t));

configuration.UseTransport<SqlServerTransport>();
configuration.EnableInstallers();
configuration.UseSerialization<JsonSerializer>();
configuration.Transactions().Enable();
configuration.Transactions().DisableDistributedTransactions();
 *configuration.UsePersistence<NHibernatePersistence>()*
*              .For(*
*              Storage.Sagas,*
*              Storage.Subscriptions,*
*              Storage.Timeouts,*
*              Storage.Outbox,*
*              Storage.GatewayDeduplication);*
configuration.EnableOutbox();
}
}

Without knowing that much about NH it looks strange that 
CustomerRegistrationSagaData.TenancyId is generated as "many-to-one", or?
Any ideas?

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.

Reply via email to