[英]Entity Framework Database First Property Validation
我先使用EF數據庫,然后使用MVC。
我想在屬性上添加一些驗證,以將其舊值與新值進行比較,如果有問題,請向MVC ModelState報告驗證錯誤。
首先使用代碼並使用屬性上的“ set”進行驗證就足夠容易了。 但是,由於數據庫是自動生成的,因此我不能首先使用它。
我看過使用IValidatableObject和validate()方法,但是到那時該屬性的值已經更改,因此我看不到要比較的舊值了。
缺少創建一種方法來將新值首先傳遞給它進行檢查的方法,我想不出另一種方法。
有什么建議么?
謝謝
如果要將新值與舊值進行比較,則必須首先從數據庫中獲取值(在更新之前)並進行比較:
[HttpPost]
public ActionResult Update(MyObject myObject)
{
var oldObject = db.Objects.FirstOrDefault(o => o.Id == myObject.Id);
//Compare oldObject.Value to myObject.Value
}
您仍然可以使用IValidatebleObject
並傳入將邏輯保持在控制器外部所需的對象。
它不是理想的,並且這首先開始說明了模型和數據庫中的一些弱點,但是這就是我最后做的方法。
我決定更改模型中的屬性,以使set為私有,然后在局部類中創建一個單獨的方法來設置值。 然后,所有驗證均以該方法完成。
還是要謝謝你的幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.