SubSonicのActiveRecordオブジェクトの代わりにPOCOを返すSubSonicデータレイヤー
-
19-08-2019 - |
質問
SubSonic(2.2)を構築中のアプリケーションで使用したいのは、そのシンプルさが気に入っており、必要と思われるあらゆる種類のクエリを処理できるからです。同時に、アプリケーションの上位レイヤーをSubsonicタイプから切り離したままにします。プレーンオールドC#オブジェクトだけを返し、POCOを渡して保存したい。
しかし、ここに問題があります。POKには、FK関係に基づいて、子コレクションと親オブジェクトのレイジーロードプロパティが必要です。私は何らかの方法でSubsonic SqlQueryオブジェクトをPOCOのプライベートメンバーに配置し、遅延ロードプロパティの取得メソッドで内部的に使用する必要があると考えています。
これをSubSonicで具体的に実装する方法についてのアイデアはありますか?誰もこれをやったことがありますか?
SubSonicの次のメジャーリリースでこのアウトオブボックスが実行されることは承知していますが、少なくとも数か月先のことです。
解決 4
これを行う良い方法を見つけられなかった。 Subsonic 3は非常に見栄えが良く、問題を解決しますが、当面は NHibernateで行った。
他のヒント
<!> quot; mostly <!> quot;のSubSonicでRepositoryRecordを使用します。ポコ。次に、プロパティが選択されたときに他のクラスをロードするクラスのパーシャルを作成します。
Partial Public Class Book
Private _Author as Database.Author
Property Author() as Database.Author
Get
If _Author is nothing then
' Load the author class here.
End if
return _Author
End get
Set
....
End Set
End Property
End Class
属性を使用できます:
tableBaseClass = <!> quot; RepositoryRecord <!> quot;
これが遅延読み込みをどのように処理するのかわかりません。 Rob Coneryの投稿詳細については、それについて。
必要なものはバージョン2.xにはありません。テンプレートを編集することで、ほとんどの方法でそこにアクセスできる場合があります(レイジーロードされたプロパティの例はブログ)。もう1つのオプションは、pocoを構築し、SubSonicが生成したクラスとクエリからモデルにマッピングするクラスを構築することです。