シナリオ
私は最新のプロジェクトに SubSonic を使用しています。まず最初に。このプロジェクトは .net 3.0 の使用に制限されており、SubSonic は素晴らしいものでした。大好きです。
ただし、カスタマイズには問題があります。顧客は、2 つの SQL Server 2005 データベースを使用するように要求してきました。そのうちの 1 つは他のデータベースをレプリケートし、一部の列は除外します。
一見、これは簡単なことのように思えます。ただし、SubSonic はデフォルトですべての列を取得するため、SQLException が発生します。テーブルごとに選択リストをエレガントに制限したいと思います。
たとえば、次のコードでうまくいきますが、クエリを新しく作成するたびにそうする必要はありません。
Query q = Post.Query().WHERE(Post.Columns.PageId, page_id);
if(UsingReplicatedDB)
q.SetSelectList(ReplicatedPostColumnList);
return q.ExecuteReader();
質問
上記のメソッドはコードをFetchByX
肥大化させ、SubSonic によって生成された組み込みメソッドでは機能しません。テーブルごとにデフォルトの SelectListをエレガントに設定する方法はありますか?
ノート
部分クラスで実行時にスキーマから列を削除しようとしましたが、列がコレクションColNameColumn
内の特定のインデックスを探しているように見えるColumns
ため、計画は失敗しました。
分かってる
「あなたはばかだ、なぜあなたはこれをするのですか?」答えます。より良い方法がある可能性が高いことは理解しており、これは少しハッキーに思えますが、これが私が目指しているポイントです。嫌がらせではない解決策が必要です。