2
非常基本,但我的Google-fu讓我失望。ReadOnly實體框架可以設置的屬性
我有一個域對象,說用戶,我希望活動屬性只能讀取。但是,從數據庫加載時,需要通過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
,因此它可以實例化對象。
架構(如果它的事項):
- 用戶類
Domain
項目 - EF6級配置是通過
Data
項目 - EF6做存在使用流利的API配置(保持ORM的東西出來的我的域名項目)
- EF6不使用DTO,但直接配置域類
問題
我怎麼能強制執行(或至少警告),開發者不能設置user.Active
?至少,我可以提供一些編譯時警告(類似於[Obsolete]
)給setter,以便他們得到通知?
感謝,
啊,是的,忘了這一切。它會做,謝謝! – jleach
我很高興能幫上忙:) – MacakM