无法将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>