9

結果セットをオブジェクトにバインドするときに、特定のプロパティまたはすべての読み取り専用プロパティを無視するようにLINQデータコンテキストに指示するにはどうすればよいですか?

LINQを使用して表現するのが難しいいくつかのT-SQLステートメントを使用しているため、データコンテキストのExecuteQueryメソッドを使用して、ストレートT-SQLをデータベースに渡します。

クラスTに読み取り専用プロパティがある場合、データコンテキストがそれらのプロパティを設定しようとして、setterプロパティがないために失敗すると、実行時に例外が発生します。これらのプロパティを無視するようにコンテキストに指示するにはどうすればよいですか?

これが私が今していることです。それは機能しますが、それは最悪です:

public bool IsPaidInFull {
    get { return NetTotal <= 0m; }
    set { /* needed so linq doesn't choke. Should never be set by hand */ }
}
4

2 に答える 2

1
public bool IsPaidInFull
{
    get { return NetTotal <= 0m; }
    private set { ;}
}
于 2013-01-17T21:52:46.877 に答える
0

Linq to Entities を検討しましたか? プロジェクトの進行状況やオーバーヘッドの量によっては、プロジェクトを変換する手間がかからない場合があります。ただし、この正確なシナリオは、Linq to Entities では問題になりません。オブジェクトをロードするときに、オブジェクトの読み取り専用プロパティを更新しようとはしません。これらは明示的にマップされておらず、単に拡張プロパティであるためです。

また、プロパティの代わりにゲッター関数を使用して、古い学校/Java ルートに進むこともできます。public bool getIsPaidInFull(){return NetTotal <= 0m;}.

または、継承された子クラスに読み取り専用プロパティを実装して遊ぶこともできますが、それによってあらゆる種類の問題が発生する可能性があります。

于 2009-05-06T16:42:21.363 に答える