次のようなデモクラス「User」があります。
public partial class User {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[StringLength(30)]
[Required]
public string LoginName { get; set; }
[StringLength(120)]
[Required]
[DataType(DataType.Password)]
public string Pwd { get; set; }
[StringLength(50)]
public string Phone { get; set; }
[StringLength(100)]
public string WebSite { get; set; }
... ...}
ご覧のとおり、「LoginName」と「Pwd」は「必須」です。
いつか、ユーザーの「Webサイト」だけを更新したいので、次のようにします。
public void UpdateUser(User user , params string[] properties) {
this.rep.DB.Users.Attach(user);
this.rep.DB.Configuration.ValidateOnSaveEnabled = false;
var entry = this.rep.DB.Entry(user);
foreach(var prop in properties) {
var entProp = entry.Property(prop);
//var vas = entProp.GetValidationErrors();
entProp.IsModified = true;
}
this.rep.DB.SaveChanges();
this.rep.DB.Configuration.ValidateOnSaveEnabled = true;
}
次のようなパラメータ"user":new User(){ID = 1、WebSite = "http://www.stackoverflow.com"}
注意、「LoginName」と「Pwd」は指定しません
この関数は正常に機能しますが、ValidateOnSaveEnabledをfalseに設定しません。
ValidateOnSaveEnabledがtrueの場合にのみ「WebSite」を検証する方法はありますか?ありがとう。