获取“无法将PersistentGenericSet强制转换为ISet”错误
我收到此错误:
无法将类型为’NHibernate.Collection.Generic.PersistentGenericSet
1[IocWinFormTestEntities.People]' to type 'System.Collections.Generic.ISet
1 [IocWinFormTestEntities.People]’。
实体:
public class Event { public Event() { this.People = new HashSet(); } public virtual Guid Id { get; private set; } public virtual ISet People { get; set; } }
地图覆盖类:
public class EventMapOverride : IAutoMappingOverride { public void Override(AutoMapping mapping) { mapping.HasMany(c => c.People) .AsSet() .Cascade.AllDeleteOrphan(); } }
从流畅的自动播放器生成的hbm:
怎么了?
您的问题是您在System.Collections.Generic
命名空间中使用ISet ,但nHibernate希望ISet为Iesi.Collections.Generic.ISet<>
。 所以将属性定义更改为
public virtual Iesi.Collections.Generic.ISet People { get; set; }
如果您想使用.net 4 ISet<>
界面,请阅读本文
最新的NHibernate使用Iesi.Collections.ISet,而不是System.Collections.Generic.ISet。 您可以引用Iesi程序集或使用System.Collections.Generic.ICollection:
public virtual ICollection People { get; set; }
ISet接口inheritance自ICollection。
使用Nhibernate 4,现在可以使用System.Collections.Generic.ISet<>
了 。
不应再出现此问题中显示的错误。