下面我創建了一個演示實體來證明什麼,我找前呼籲實體的方法:在實體框架,如何節約
public class User : IValidatableObject
{
public string Name { get; set; }
[Required]
public DateTime CreationDate { get; set; }
public DateTime UpdatedOnDate { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if(Name = "abc")
{
yield return new ValidationResult("please choose any other name then abc", new[] { "Name" });
}
}
}
我實現IValidatableObject
接口,使這個實體SelfValidating。
現在目前來創建新的用戶IAM這樣
User u = new User();
u.Name = "Some name";
u.CreationDate = DateTime.Now
dbContext.Users.Add(u);
dbContext.SaveChanges();
蔭規劃轉向內部User
類u.CreationDate=DateTime.Now;
代碼。和實施提供了將要執行的方法保存之前和驗證
// class structure that I am looking for
public class User : IValidatableObject,IMyCustomInterFace
{
//rest codes as above class
public void MyMethod(Whatever)
{
//this method gets called after Validate() and before save
if(dataContext.Entry<User>(this).State == System.Data.EntityState.Added)
{
//add creation date_time
this.CreationDate=DateTime.Now;
//SET MORE DEFAULTS
}
if(dataContext.Entry<User>(this).State == System.Data.EntityState.Modified)
{
//update Updation time
this.UpdatedOnDate = DateTime.Now;
}
}
}
現在創建一個新的用戶我只需要如下做後的界面,請注意,我沒有添加日期屬性這個時候,類自動執行。
User u = new User();
u.Name = "Some name";
dbContext.Users.Add(u);
dbContext.SaveChanges();
要更新的用戶,UpdatedOnDate
屬性將自動被類更新
User u = getUserFromSomeWhere();
u.Name = "Updated Name";
dataContext.Entry<User>(u).State = System.Data.EntityState.Modified;
dbContext.SaveChanges();
我的問題:是否有任何現有的接口,提供 一些方法得到Save
和AfterValidate
或一些之前調用其他的做法,我可能不知道。或者,如果我創建了我的自定義界面,我怎麼能讓它的方法以我想要的順序執行。
你可能想看看SavingChanges事件:http://msdn.microsoft.com/en-us/library/cc716714.aspx – Yakimych
我ahve已經看到,但沒有做什麼亞姆尋找。 –