无法将NHibernate.Collection.Generic.PersistentGenericBag类型的对象强制转换为List
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将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();
}
}
现在,我创建了这个类的对象
ReportRequest objReportRequest = new ReportRequest(2, new List<int>() { 11, 12, 15 });
并尝试使用保存对象在数据库中
session.Save(objReportRequest);
我收到以下错误:“无法转换类型为'NHibernate.Collection.Generic.PersistentGenericBag1[System.Int32]' to type 'System.Collections.Generic.List
1 [System.Int32]'的对象。”
我不确定我是否正确映射了EntityIds属性。请指导。
谢谢!
使用集合接口而不是具体集合,因此NHibernate可以使用自己的集合实现注入它。
在这种情况下,使用IList<int>
而不是List<int>
我发现使用ICollection<T>
工作的地方IList<T>
没有。
我不是NHibernate巫师,但我确实想要向可能在这个问题上落地的其他人扔骨头。
以上是关于无法将NHibernate.Collection.Generic.PersistentGenericBag类型的对象强制转换为List的主要内容,如果未能解决你的问题,请参考以下文章
无法将 createdAt 和 updatedAt 保存为日期时间值,也无法将后端保存为前端
C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable
无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS