开发者

Unable to cast object of type NHibernate.Collection.Generic.PersistentGenericBag to List

I have a class called ReportRequest as:

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;
    }
}

It is mapped using Fluent Hibernate as:

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();
    }
}

Now, I create an object of this class as

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

and try to Save the object in database using

session.Save(objReportRequest);

I get the following error: "Unable to cast object of type 'NHibernate.Collection.Generic.PersistentGenericBag1[System.Int32]' to type 'System.Collections.Generic.List1[System.Int32]'."

I am not sure if I have map开发者_高级运维ped the property EntityIds correctly. Please guide.

Thank you!


Use collection interfaces instead of concrete collections, so NHibernate can inject it with its own collection implementation.

In this case, use IList<int> instead of List<int>


I found that using ICollection<T> worked where IList<T> did not.

I'm no NHibernate wizard, but I did want to throw a bone to someone else who might land on this issue.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜