Entity Frameworkの中に計算されたプロパティ
-
16-09-2019 - |
質問
私は次のプロパティを持つEmployeeオブジェクトがあるとします:
string Name { get; }
float Hours { get; }
float Wage { get; }
私は時間*賃金に等しい性質、給与を、追加したいです。通常のビジネスオブジェクトでは、私は単にプロパティにそれをコーディングするだろうが、クラスを再生成する必要があれば、これはおそらく全滅でしょう。
データベース・エンティティにマッピングする手間を経由せずにこれを実装するEFの標準的な方法はありますか?
解決
確かに。 のEmployeeExtension.cs は、例えば、別のファイルを作成します。
このファイルでは、次のコードを配置します:
public partial class Employee
{
public decimal Salary
{
get { return Hours * Wage; }
}
}
デザイナーはあなたが上がらないクラスにメンバーを追加したいということを知っていたので、SQLにLINQとEntity Frameworkのクラスは、あなたは多くのファイル上の定義を分割できるようにするための部分のキーワードで生成され、 「Tは、継続的に、ベースのソースファイルを自動生成によって上書きされます。
他のヒント
EFによって作成されたクラスは、部分的です。だから、おそらく
プロパティを実装よりも、別の部分クラス(同じ名前空間、当然の同じクラス名)を含む別のファイルを追加することができますpublic single Salary
{
get
{
return this.Hours * this.Wage;
}
}
トリックを行う必要があります(これらのシングルがNULL可能でない場合は、あなたを気に!)
私が最初に動作するように「アルゴの答えを得ることができませんでした。私の周りの小さな演奏が気づいた後、その私は、次の属性、すべてがうまく働いた(WCFのように)プロパティを、飾られている場合。
[global::System.Runtime.Serialization.DataMemberAttribute()]
を1として「アルゴの指示は、(例えばEmployeeExtension.csのための)別のファイルを作成します。説明するように、これは部分的にマークする必要があります。
このファイルでは、次のコードを配置します:
public partial class Employee
{
[global::System.Runtime.Serialization.DataMemberAttribute()]
public decimal Salary
{
get { return Hours*Wage; }
}
}
は、このことができます...ホープます。
あなたは、エンティティクラスのプロパティを実装することができます。エンティティフレームワークを使用すると、クラスにメンバーを追加することができ、部分的なクラスを生成します。あなたのコードに、このようなクラスを追加します:
public partial class Employee {
public Single Salary {
get { return Hours*Wage; }
}
}
このは、Entity Frameworkを5で私のために働いていなかった私のためのソリューションは、単に[NotMapped]属性を使用することでした。詳細情報については参照コードファーストDataAnnotationsする