public virtual IList<string> Tags { get; private set; }
In my fluent nhibernate mapping file, I have the following mapping:
HasMany(x => x.Tags)
.Table("ProductTags")
.Element("Tag")
.AsBag();
Which results in the following hbm mapping
<bag name="Tags" table="ProductTags">
<key>
<column name="Product_id" />
</key>
<element type="System.String, mscorlib, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089">
<column name="Tag" />
</element>
</bag>
I am able to build a session factory, but when I try to save an
entity, I get the following exception:
NHibernate.MappingException : No persister for: System.String
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String
entityName)
at NHibernate.Impl.SessionImpl.GetEntityPersister(String entityName,
Object obj)
at
NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object
entity, String entityName, Object anything, IEventSource source,
Boolean requiresImmediateIdAccess)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
event)
at
NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent
event)
at
NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent
event)
at
NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent
event)
at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.Save(Object obj)
at
FluentNHibernate.Testing.PersistenceSpecification`1.TransactionalSave(Object
propertyValue) in d:\Builds\FluentNH\src\FluentNHibernate\Testing
\PersistenceSpecification.cs: line 135
at
FluentNHibernate.Testing.PersistenceSpecification`1.CheckList(Expression`1
expression, IList`1 propertyValue) in d:\Builds\FluentNH\src
\FluentNHibernate\Testing\PersistenceSpecification.cs: line 74
at
AspZone.Commerce.CoreTests.Infrastructure.Persistence.Mappings.ProductTest.CanPersistProduct()
in ProductTest.cs: line 23
On Feb 18, 6:56 pm, JohnRudolfLewis <johnrle...@gmail.com> wrote:
> In my entity class I have the following property:
>
> public virtual IList<string> Tags { get; private set; }
>
> In my fluent nhibernate mapping file, I have the following mapping:
>
> HasMany(x => x.Tags)
> .Table("ProductTags")
> .Element("Tag")
> .AsBag();
>
> Which results in the following hbm mapping
>
> <bag name="Tags" table="ProductTags">
> <key>
> <column name="Product_id" />
> </key>
> <element type="System.String, mscorlib, Version=4.0.0.0,
> Culture=neutral, PublicKeyToken=b77a5c561934e089">
> <column name="Tag" />
> </element>
> </bag>
>
> I am able to build a session factory, but when I try to save an
> entity, I get the following exception:
>
> NHibernate.MappingException :Nopersisterfor: System.String
> at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String
> entityName)
> at NHibernate.Impl.SessionImpl.GetEntityPersister(String entityName,
> Object obj)
> at
> NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object
> entity, String entityName, Object anything, IEventSource source,
> Boolean requiresImmediateIdAccess)
> at
> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
> event)
> at
> NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
> event)
> at
> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent
> event)
> at
> NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent
> event)
> at
> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent
> event)
> at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
> at NHibernate.Impl.SessionImpl.Save(Object obj)
> at
> FluentNHibernate.Testing.PersistenceSpecification`1.TransactionalSave(Object
> propertyValue) in d:\Builds\FluentNH\src\FluentNHibernate\Testing
> \PersistenceSpecification.cs: line 135
> at
> FluentNHibernate.Testing.PersistenceSpecification`1.CheckList(Expression`1
> expression, IList`1 propertyValue) in d:\Builds\FluentNH\src
> \FluentNHibernate\Testing\PersistenceSpecification.cs: line 74
> at
> AspZone.Commerce.CoreTests.Infrastructure.Persistence.Mappings.ProductTest.CanPersistProduct()
> in ProductTest.cs: line 23