I have code like this:
Code:
[Serializable()]
public class Role : GenericDomain<Guid>
{
private string _Name;
public virtual string Name
{
get { return _Name; }
set { _Name = value; }
}
private string _Description;
public virtual string Description
{
get { return _Description; }
set { _Description = value; }
}
private List<FunctionModuleBase> _Modules;
public virtual List<FunctionModuleBase> Modules
{
get { return _Modules; }
set { _Modules= value; }
}
}
Mapping like this:
Code:
<class name="SMSSystem.Domain.Role" table="T_Role">
<id name="ID" type="Guid">
<column name="U_UID" sql-type="uniqueidentifier" not-null="true" unique="true"/>
<generator class="guid" />
</id>
<property name="Name" type="string">
<column name="S_Name" sql-type="varchar" length="200"/>
</property>
<property name="Description" type="string">
<column name="S_Description" sql-type="varchar" length="2000"/>
</property>
<bag name='FunctionModules' table='T_RoleFunction' cascade='all' lazy='true' inverse='true' generic='true'>
<key column='U_RoleUID'/>
<many-to-many class="SMSSystem.Domain.FunctionModuleBase" not-found="ignore" lazy="proxy">
<column name="U_FunctionUID" sql-type="uniqueidentifier"/>
</many-to-many>
</bag>
</class>
But, it throw a exception when get the entity:
NHibernate.MappingException: Invalid mapping information specified for type SMSSystem.Domain.Role, check your mapping file for property type mismatches
System.InvalidCastException: Can not cast type “NHibernate.Collection.Generic.PersistentGenericBag`1[SMSSystem.Domain.FunctionModuleBase]” to type“System.Collections.Generic.List`1[SMSSystem.Domain.FunctionModuleBase]”
If I change the entity use IList<T>
Code:
private IList<FunctionModuleBase> _Modules;
public virtual IList<FunctionModuleBase> Modules
{
get { return _Modules; }
set { _Modules = value; }
}
It works fine.
How can I mapping property use List<T> type?
Thanks