バージョン2.1から、NHibernateはIoCコンテナを介してIUserTypesのコンストラクタインジェクションをサポートしています(ByteCodeProvider設定で提供)。Fluent NHibernateでIoCコンストラクタインジェクション(空でないコンストラクタ)を使用するIUserTypeインプリメンテーションを使用する方法
しかし、Fluent NHibernateの設定(自動マッピングではない)でこれを実行しようとすると、私の設定をビルドするときに、私のオブジェクト(この例ではカスタムICompositeUserType)空のデフォルトコンストラクタを持つ
FluentNHibernate.Mapping.PropertyPart.AddColumnsFromCompositeUserType(タイプcompositeUserType)のActivator.CreateInstance()の呼び出しにこの例外をトレースしました。
NHibernateのIoCサポート機能の全ポイントは、Activator.CreateInstanceへの呼び出しを、指定されたカスタムByteCodeProviderの呼び出しで置き換えることでした。
私はFluent NHibernateでこれを動作させることが可能か、Fluent NH構成をスクラップして、NHibernateの組み込みのプログラム構成に戻る必要がありますか?この機能についての記事をブログに
リンク:
UPDATE:問題はICompositeUserTypeのカスタム実装のFluentNHibernateの取り扱いであるように見えます。コンポジット・ユーザー・タイプをIUserTypeに変更しました(これはおそらくクラスが実際にあったものに適しています)、Fluent NHibernateが現在協力しているように見えます。
UPDATE#2:空のコンストラクタを追加すると問題は解決しますが、これは回答としてマークしますが、提案は回答ではなくコメントになっています。加えた)。
答えはわかりませんが、XBMと流暢なマッピングを自由に混ぜることができますので、FNH全体の作業を取り消す必要はありません。 – Jay
デフォルトの空のコンストラクタ(publicまたはprotected)を指定するとどうなりますか? –
@Jamie井戸、私はちょうどそれが聞こえるように、あなたの提案がリッチと私が以下で議論しているものであることを理解しました。私はそれを試して、報告を返すよ。 –