期間未映射的屬性我有一個用戶模型,其中包含兩個[NotMapped]字符串屬性Password和ConfirmPassword。這些都是未映射的,因爲我將密碼保存爲字節數組(salting後),所以在用戶模型中有兩個額外的屬性(映射的)InternalPassword和Salt。如何防止EF驗證在DBContext.SaveChanges()
問題是,當我使用用戶模型更改密碼時,實體框架拋出DBEntityValidation錯誤,指出「密碼屬性是必需的」。我在這裏理解的是EF在保存之前試圖驗證我的模型,並且由於沒有設置Password/ConfirmPassword,它會拋出此錯誤。這提出了以下問題:
1)如果將密碼顯式註冊爲[NotMapped],爲什麼EF在保存期間驗證它? 2)如果EF在保存期間執行驗證,並且綁定期間也執行相同操作(控制器操作方法中的I.E.),它是否會影響性能? (驗證兩次) 3)解決此錯誤的建議方法是什麼? (如果我明確地將密碼屬性設置爲虛擬值,錯誤消失。)
編輯:我已經刪除了代碼,因爲它很冗長,可能是沒有答案的原因。如果有人想看看,我可以在下面添加它。
這很奇怪,因爲即使'Password'屬性被映射,它也不會被默認需要,因爲'string'屬性從不需要,除非你明確指定 - 在屬性中放置'[Required]'屬性或調用'在Fluent API中使用IsRequired()'。你有'Password'屬性的設置嗎? – Slauma
@Slauma是的,我需要在密碼上指定屬性。這需要在註冊期間提示用戶填寫密碼字段。但是因爲這沒有被映射,爲什麼EF在保存期間嘗試驗證它? –