I get this error:
Unable to cast object of type 'NHibernate.Collection.Generic.PersistentGenericSet
1[IocWinFormTestEntities.People]' to type 'System.Collections.Generic.ISet
1[IocWinFormTestEntities.People]'.
The entity:
public class Event
{
public Event()
{
this.People = new HashSet<People>();
}
public virtual Guid Id { get; private set; }
public virtual ISet<People> People { get; set; }
}
Map override class:
public class EventMapOverride : IAutoMappingOverride<Event>
{
public void Override(AutoMapping<Event> mapping)
{
mapping.HasMany(c => c.People)
.AsSet()
.Cascade.AllDeleteOrphan();
}
}
Generated hbm from fluent automapper:
<set cascade="all-delete-orphan" name="People">
<key>
<column name="Event_id" />
</key>
<one-to-many class="IocWinFormTestEntities.People, IocWinFormTestEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</set>
What's wrong?
Your problem is you are using ISet in System.Collections.Generic
namespace but nHibernate expects ISet to be Iesi.Collections.Generic.ISet<>
. So change your property definition to
public virtual Iesi.Collections.Generic.ISet<People> People { get; set; }
If you want to use .net 4 ISet<>
interface, go through this article
The latest NHibernate uses Iesi.Collections.ISet, not System.Collections.Generic.ISet. You can either reference the Iesi assembly or use System.Collections.Generic.ICollection:
public virtual ICollection<People> People { get; set; }
The ISet interface inherits from ICollection.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With