DataContext.ExecuteQueryを使用している場合、読み取り専用クラスのプロパティを無視する
-
22-08-2019 - |
質問
オブジェクトに結果セットをバインドするときにどのように私は、特定の性質、またはすべての読み取り専用のプロパティのいずれかを無視するLINQのデータコンテキストを教えていますか?
私は、LINQを使用して表現することが困難ないくつかのT-SQL文で働いているので、私はデータベースに直接T-SQLを渡すためにデータコンテキストのexecuteQueryメソッドを使用しています。
私のクラスTは、任意の読み取り専用のプロパティを持っている場合は、データコンテキストがこれらのプロパティを設定しようとすると何のsetterプロパティがないため、失敗したときに、、私は、実行時に例外を取得します。どのように私はそれらの特性を無視して、コンテキストを教えていますか?
これは私が今やっているものです。それは動作しますが、それは吸うます:
public bool IsPaidInFull {
get { return NetTotal <= 0m; }
set { /* needed so linq doesn't choke. Should never be set by hand */ }
}
解決
あなたはエンティティへのLINQを検討したことがありますか?それはあなたが慣れているどこまであなたがに沿って、またはどのくらいのORMのオーバーヘッドに応じて、プロジェクトを変換する手間の価値がないかもしれません。しかし、この正確なシナリオはエンティティへのLINQでの問題ではありません。それは彼らが明示的にマップされていないので、彼らは単に拡張プロパティで、それをロードするときにオブジェクトにプロパティのみを読み込む更新しようとしません。
また、あなたの代わりにプロパティのゲッター機能を使って、古い学校/ javaのルートを行くことができます。パブリックブールgetIsPaidInFull(){NetTotal <= 0メートルを返します;}。
それとも、継承された子クラスで読み取り専用のプロパティを実装して遊ぶことができ、それはタイプの問題のすべての種類を紹介してます。
他のヒント
public bool IsPaidInFull
{
get { return NetTotal <= 0m; }
private set { ;}
}
所属していません StackOverflow