Подтвердить что ты не робот

В структуре Entity, как вызвать метод в Entity перед сохранением

Ниже я создал демо-объект, чтобы продемонстрировать, что я ищу

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();

Я планирую сдвинуть код u.CreationDate=DateTime.Now; внутри класса пользователя. И реализуйте интерфейс, который предоставляет метод, который будет выполнен до сохранения и после проверки

// class structure that iam 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 и After Validate или другими способами  что я не знаю.

Или, если я создаю свой собственный интерфейс, как я могу сделать его метод для выполнения в порядке, который я ищу

4b9b3361

Ответ 1

У меня почти идентичная ситуация, и я управляю ею, обрабатывая событие