首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nHibernate集合问题(检查映射文件中是否存在特性类型不匹配)

nHibernate集合问题(检查映射文件中是否存在特性类型不匹配)
EN

Stack Overflow用户
提问于 2009-10-01 21:06:54
回答 3查看 8.2K关注 0票数 3

我收到以下错误:无法将'NHibernate.Collection.Generic.PersistentGenericSet类型的对象强制转换为'Iesi.Collections.Generic.SortedSet‘类型。

为类型类型指定的映射信息无效,请检查映射文件中是否存在属性类型不匹配的情况。

下面是我的set定义:

代码语言:javascript
运行
复制
<set name="ProcessTrackerDetails" lazy="true" access="field.camelcase-underscore" 
                sort="natural" cascade="all" inverse="true">
  <key column="ProcessTrackerDetailsID"/>
  <one-to-many class="ProcessTrackerDetail"></one-to-many>
</set>

下面是代码:

代码语言:javascript
运行
复制
private Iesi.Collections.Generic.SortedSet<ProcessTrackerDetail> _processTrackerDetails = new SortedSet<ProcessTrackerDetail>();

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-02 06:46:05

NHibernate需要接口。尝试使用ISet<ProcessTrackerDetail>而不是SortedSet<ProcessTrackerDetail>

票数 10
EN

Stack Overflow用户

发布于 2009-10-20 14:45:01

更改您的代码以使用ISet接口定义_processTrackerDetails。

代码语言:javascript
运行
复制
private ISet<ProcessTrackerDetail> _processTrackerDetails = 
    new SortedSet<ProcessTrackerDetail>();

您仍然可以将其分配给SortedSet,但我不确定它在延迟加载时是否做得很好,因为NHibernate将使用它的ISet实现来执行延迟加载。映射中“自然”的sort=应该注意排序顺序。

票数 2
EN

Stack Overflow用户

发布于 2011-02-01 18:02:12

如果你使用的是' set‘关系类型(唯一的项目集合,NHibernate.Collection.Generic.PersistentGenericSet) ),那么你可以用System.Collections.Generic.ICollection定义你的映射并使用System.Collections.Generic.HashSet。

我使用Castle ActiveRecord,下面是我使用的代码:

代码语言:javascript
运行
复制
// In the Collections entity mapping
    [HasAndBelongsToMany(typeof(Region),
    Table = "CollectionRegionAssociation", ColumnKey = "CollectionId", ColumnRef = "RegionId", RelationType = RelationType.Set)]
    public virtual System.Collections.Generic.ICollection<Region> Regions { get; set; }

// Creating and saving a new object
    var c = new Collection(); // my own entity
    c.Regions = new System.Collections.Generic.HashSet<Region>();
    c.Regions.Add(new Region() { ... });
    c.Save();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1506500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档