2009-07-06 4 views
0

子オブジェクトを含む親クラスがあります。 親を保存するときに、子オブジェクトを保存するためにsetを使用しています。 setが子オブジェクトの保存に使用されるかどうかはわかりません。セットまたはバッグカスケードを使用中に無効なキャストエラーが発生しました

System.InvalidCastExceptionの下に、このエラーを取得 とIM:型のオブジェクトをキャストすることができませんが「X」「Iesi.Collections.ISet」

い誰もが解決策を知って入力します。

<class name="Customer" table="Customers" lazy="false" dynamic-update="true"> 

    <id name="Id" column="CustomerID" type="Guid" > 
    <generator class="guid.comb" /> 
    </id> 

    <property name="Name" column="CustomerName" type="String" length="50" not-null="true" /> 

<bag name="users" table="Users" cascade="all-delete-orphan"> 
    <key column="CustomerID" /> 
    <one-to-many class="User" /> 
</bag> 

<set name="customerPreferences" table="Preferences" cascade="all-delete-orphan"> 
    <key column="CustomerID" /> 
    <one-to-many class="CustomerPreferences" /> 
</set> 

</class> 

エンティティクラス: パブリッククラスカスタマー { 民間のGuid _id。 プライベート文字列_name; プライベートIList _users =新しいList(); プライベートCustomerPreferences _customerPreferences;

public Guid Id 
    { 
     get { return _id; } 
     set { _id = value; } 
    } 

    public string Name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 

    public CustomerPreferences CustomerPreferences 
    { 
     get { return _customerPreferences; } 
     set { _customerPreferences = value; } 
    } 

    public IList<User> Users 
    { 
     get { return _users; } 
     set { _users = value; } 
    } 
+0

マッピングファイルとエンティティを含めることはできますか? – Nigel

+0

ええ、エンティティを追加しました。ユーザーではなくcustomerpreferencesでエラーが発生しました。 – alice7

答えて

0

あなたのマッピングファイルは正常です。だから私は問題があなたのCustomerPreferencesクラスの実装と関係していると推測しています。

マッピングファイルのset属性は、(エンティティにマップされたときに)Iesi.Collections.Generic.ISet<T>インターフェイスを実装する必要があるプロパティを定義します。どうやら、標準ICollection<T>とNHibernate 2.1とのインターフェースを使用することもできますが、これは決して試したことがありません。

したがって、CustomerPreferencesクラスがISet<T>インターフェイスを実装していない場合、InvalidCastExceptionが発生します。

関連する問題