我收到以下错误:无法将'NHibernate.Collection.Generic.PersistentGenericSet类型的对象强制转换为'Iesi.Collections.Generic.SortedSet‘类型。
为类型类型指定的映射信息无效,请检查映射文件中是否存在属性类型不匹配的情况。
下面是我的set定义:
<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>
下面是代码:
private Iesi.Collections.Generic.SortedSet<ProcessTrackerDetail> _processTrackerDetails = new SortedSet<ProcessTrackerDetail>();
有什么建议吗?
发布于 2009-10-02 06:46:05
NHibernate需要接口。尝试使用ISet<ProcessTrackerDetail>
而不是SortedSet<ProcessTrackerDetail>
发布于 2009-10-20 14:45:01
更改您的代码以使用ISet接口定义_processTrackerDetails。
private ISet<ProcessTrackerDetail> _processTrackerDetails =
new SortedSet<ProcessTrackerDetail>();
您仍然可以将其分配给SortedSet,但我不确定它在延迟加载时是否做得很好,因为NHibernate将使用它的ISet实现来执行延迟加载。映射中“自然”的sort=应该注意排序顺序。
发布于 2011-02-01 18:02:12
如果你使用的是' set‘关系类型(唯一的项目集合,NHibernate.Collection.Generic.PersistentGenericSet) ),那么你可以用System.Collections.Generic.ICollection定义你的映射并使用System.Collections.Generic.HashSet。
我使用Castle ActiveRecord,下面是我使用的代码:
// 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();
https://stackoverflow.com/questions/1506500
复制相似问题