簡體   English   中英

實體框架數據庫優先屬性驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM