オブジェクトの保存中にnHibernateエラーが発生しました。関与nHibernate例外:タイプのオブジェクトをキャストすることができません
クラスは次のとおりです。
interface IHardwareSpecification
{
//fields and methods
}
public class CPUSpecification : IHardwareSpecification
{
//fields and methods
}
public class SystemTransaction
{
//Bunch of other fields
private IHardwareSpecification _specs;
public virtual IHardwareSpecification Specification
{
get { return _specs; }
set { _specs = value;}
}
}
マッピング:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" ...>
<class name="SystemTransaction" table="SystemTransactions" lazy="false">
<component access="field.camelcase-underscore" name="Specification"
class="HardwareMarketplace.Model.CPUSpecification">
<property access="field.camelcase-underscore" column="Specification_Rate"
name="Rate"/>
...
</component>
</class>
</hibernate-mapping >
保存を介してデータベースにオブジェクトを永続化する一方で、私は次のエラーを取得する:
Exception: Unable to cast object of type 'Castle.Proxies.IHardwareSpecificationProxy' to type 'Hardwaremarketplace.Model.SystemTransactions.CPUSpecification'.
Iどのようにこれを解決するかを理解しようとしているので、感謝する。 f
@Diego CPUSpecificationは値オブジェクトであるため、マッピングはありません。私はIHardwareSpecificationのためのマッピングを持っていません。 – fjxx
私が今まで気づいた唯一のエラーは、フィールドの名前が "_specs"ですが、マッピングの名前は "仕様"です。フィールドは、アクセス設定に従って「_指定」という名前にする必要があります。さもなければ私はあなたの問題を再現できません。もっと情報が役立つかもしれません。 – AlexD
どういうわけか、エンティティを保存しようとする前に、「仕様」プロパティに「IHardwareSpecificationProxy」タイプのオブジェクトが割り当てられています。これが問題の原因です。私は、そのプロキシを作成するためのnHiberanteの理由は見ません。エンティティを保存する前に、どのようにエンティティを初期化しますか? – AlexD