非常に基本的なものですが、私のGoogle-fuは失敗しています。ReadOnly Entity Frameworkで設定できるプロパティ
Activeプロパティを読み込み専用にするドメインオブジェクト、たとえばUserがあります。しかし、データベースからロードされたときにEF(6)を介してプロパティを設定する必要があります。
表:
CREATE TABLE Users (
ID INT NOT NULL PRIMARY KEY CLUSTERED,
Active BIT NOT NULL DEFAULT 1
-- other stuff
);
クラス:
public class User
{
public int ID { get; set; }
public bool Active { get; set; } // this should be RO
public void Activate() {
Active = true;
this.AddChangelog(ChangeType.Activation, "Activated");
}
public void Deactivate() {
Active = false;
this.AddChangelog(ChangeType.Activation, "Deactivated");
}
// changelogging, etc.
}
開発者が直接Active
を変更するべきではなく、その代わりにActivate()
Deactivate()
及び方法を使用する必要があります。それでも、EF6はオブジェクトをインスタンス化できるように直接Active
を設定する必要があります。
アーキテクチャ(それが重要な場合):
- UserクラスEF6クラスコンフィギュレーションが
Data
プロジェクト - を介して行われる
Domain
プロジェクトに存在するEF6が流暢APIの設定を使用するには、(のうちのORMのものを保持します私のドメインプロジェクト)- EF6はDTOを使用せず、ドメインクラスを直接設定します
質問
どのように強制する(または少なくとも警告)user.Active
を設定していない開発者をできますか?少なくとも、コンパイル時の警告([Obsolete]
に似ています)を設定者に提供して、通知を受けることはできますか?
おかげで、
ああ、はい、それについて忘れました。それは、ありがとう! – jleach
私は助けてくれると嬉しいです:) – MacakM