私はSystem.DateTimeOffset型のプロパティを持つドメインモデルオブジェクトを持っています。私はこのタイプをネイティブにサポートしていないデータベースを使用しています。そのため、 'datetime'タイプのカラムと 'smallint'タイプのカラムを使用して格納する予定です。値型のNHibernate ICompositeUserTypeの使用
NHibernateコンポーネントを使ってこれをマップする方法を掘り下げ、ICompositeUserTypeインスタンスを使用して動作することがわかりました。しかし、インターフェイスを実装する際には、型内のプロパティを表面的に設定する "SetPropertyValue"というメソッドに遭遇しました。 DateTimeOffsetはSystem.ValueTypeなので、このようなプロパティを設定するだけでは不変です(少なくとも、リフレクションや安全でないコードを使用しないで、避けたい)。 SetPropertyValueのインスタンスパラメータは 'ref'ではないので、NHibernateではどのようにValueTypeインスタンスをコンポーネントとして使用しますか?
Ok、fair enough ...私はそれまでのところです。しかし、あなたの 'dt'インスタンスはドメインモデルにどのように戻ってきますか? – codekaizen
dt =コンポーネント。DateTimeにキャストされました。どこでも((DateTime)コンポーネントで)置き換えることができます。コンポーネントは実際にドメインモデルに返されたものです。 – anonymous
この資料のドキュメントがあるかどうかはわかりません。私はそれを覚えていないし、私のコードで文脈を見なければならなかった。私は、通常NHibernateで提供されている例を見なければならないと思っています(私は思っていますか?)そしてそれから学びます(そして、一度やったらそれを忘れてしまいます!) – anonymous