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.