我有一个演示类“用户”,如下所示:
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; }
... ... }
如您所见,“登录名”和“密码”是“必填项”。
有时,我只想更新用户的“网站”,所以我这样做:
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 为真时,是否有任何方法仅验证“WebSite”?谢谢。