无法将types为NHibernate.Collection.Generic.PersistentGenericBag的对象转换为List

我有一个名为ReportRequest的类,如下所示:

public class ReportRequest { Int32 templateId; List<Int32> entityIds; public virtual Int32? Id { get; set; } public virtual Int32 TemplateId { get { return templateId; } set { templateId = value; } } public virtual List<Int32> EntityIds { get { return entityIds; } set { entityIds = value; } } public ReportRequest(int templateId, List<Int32> entityIds) { this.TemplateId = templateId; this.EntityIds = entityIds; } } 

它使用Fluent Hibernate映射为:

 public class ReportRequestMap : ClassMap<ReportRequest> { public ReportRequestMap() { Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native(); Map(x => x.TemplateId).Not.Nullable(); HasMany(x => x.EntityIds).Table("ReportEntities").KeyColumn("ReportRequestId").Element("EntityId").AsBag().Cascade.AllDeleteOrphan(); } } 

现在,我创build了这个类的一个对象

 ReportRequest objReportRequest = new ReportRequest(2, new List<int>() { 11, 12, 15 }); 

并尝试使用数据库保存对象

 session.Save(objReportRequest); 

我得到以下错误: “无法强制types'NHibernate.Collection.Generic.PersistentGenericBag 1[System.Int32]' to type 'System.Collections.Generic.List对象1[System.Int32]' to type 'System.Collections.Generic.List 1 [System.Int32]'”。

我不知道我是否正确地映射了属性EntityIds。 请指导。

谢谢!

使用集合接口,而不是具体的集合,所以NHibernate可以注入它自己的集合实现。

在这种情况下,使用IList<int>而不是List<int>