首页 新闻 赞助 找找看

NHibernate one to many映射报错,求解答

0
悬赏园豆:20 [已解决问题] 解决于 2014-09-04 18:06

无法将类型为“NHibernate.Collection.Generic.PersistentGenericSet`1[VideoStorageManager.Dal.Model.Monitor]”的对象强制转换为类型“Iesi.Collections.Generic.ISet`1[VideoStorageManager.Dal.Model.Monitor]”。

报的以上错误,目前完全没有头绪,希望有懂的大大回复我。

Dfly的主页 Dfly | 初学一级 | 园豆:74
提问于:2014-09-04 16:13
< >
分享
最佳答案
0

/// <summary>
/// 相机信息
/// </summary>
private ISet<Monitor> _monitors = new HashedSet<Monitor>();

把这个换成IList

<one-to-many class="Monitor"/>应该对应的是IList

收获园豆:20
悟行 | 专家六级 |园豆:12559 | 2014-09-04 16:45

报类似错误……

Dfly | 园豆:74 (初学一级) | 2014-09-04 16:49

@Dfly: 

<!--The foreign keys-->
        <bag name="Aaa" cascade="none" lazy="true" table="Addr_BusinessArea">
            <key column="CityID" />
            <one-to-many class="Ets.CRM.Repository.Bbb, Ets.CRM.Repository" />
        </bag>

public virtual IList<Bbb> Aaa
        {
            get
            {
                return this.aaa;
            }

            set
            {
                this.aaa= value;
            }
        }

这是我们的例子,你可以参考一下

悟行 | 园豆:12559 (专家六级) | 2014-09-04 16:52

@ArnoldZhang: 好,我先试试

Dfly | 园豆:74 (初学一级) | 2014-09-04 16:56

@ArnoldZhang:你的方式可以,但是我还是不太明白,因为我确实用过HashedSet可以的,只是因为同事把表结构改的有点多而且没有通知我才会出现这个问题的,不知道你可能给我更好的解答。

Dfly | 园豆:74 (初学一级) | 2014-09-04 18:06

@Dfly: 用hashedset当然可以的。你得这么配置。

<set name="Users" table="TBLPURCHASEGROUPUSER" inverse="false" lazy="false">
      <key column="PURCHASE_GROUP_ID"/>
      <many-to-many class="User" column="USER_ID"/>
    </set>

 

这样用private ISet<User> _users;

或者new HashedSet<User>();

这两种方式都可以的。

悟行 | 园豆:12559 (专家六级) | 2014-09-04 20:31
其他回答(1)
0

Model中集合类型与配置文件不一致

lucika.zh | 园豆:62 (初学一级) | 2014-09-04 16:29

配置文件写的

<set name="Monitors" table="ebs_monitor`" generic="true" inverse="true">
<key column="EQUIPMENTID" foreign-key="Fk_NvrMonitor"/>
<one-to-many class="Monitor"/>

Model中写的这样

/// <summary>
/// 相机信息
/// </summary>
private ISet<Monitor> _monitors = new HashedSet<Monitor>();

 

应该没问题吧?

 

支持(0) 反对(0) Dfly | 园豆:74 (初学一级) | 2014-09-04 16:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册