Я хочу найти то, что свойство изменено и что в таблице журнала. для этого я не хочу использовать трекер изменений.
теперь я использую стратегию ChangingAndChangedNotifications
:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasChangeTrackingStrategy(ChangeTrackingStrategy.ChangingAndChangedNotifications);
base.OnModelCreating(modelBuilder);
}
и пишу этот класс:
public class NotificationEntity : INotifyPropertyChanged, INotifyPropertyChanging
{
public event PropertyChangedEventHandler PropertyChanged;
public event PropertyChangingEventHandler PropertyChanging;
protected void SetWithNotify<T>(T value, ref T field,
[CallerMemberName] string propertyName = "")
{
if (!Object.Equals(field, value))
{
PropertyChanging?.Invoke(this,
new PropertyChangingEventArgs(propertyName));
field = value; //
PropertyChanged?.Invoke(this,
new PropertyChangedEventArgs(propertyName));
}
}
}
и это моя сущность:
public class User : NotificationEntity
{
private string _name;
private string _email;
public int Id { get; set; }
public string Name { get => _name; set => SetWithNotify(value, ref _name); }
public string Email { get => _email; set => SetWithNotify(value, ref _email); }
}
, и я отменяю изменение сохранения следующим образом:
public override int SaveChanges()
{
var modifiedEntities = ChangeTracker.Entries()
.Where(p => p.State == EntityState.Added || p.State == EntityState.Modified).ToList();
var now = DateTime.UtcNow;
foreach (var change in modifiedEntities)
{
var entityName = change.Entity.GetType().Name;
foreach (var prop in change.OriginalValues.Properties)
{
var originalValue = change.OriginalValues[prop].ToString();
var currentValue = change.CurrentValues[prop].ToString();
if (originalValue != currentValue) /
{
}
}
}
return base.SaveChanges();
}
теперь я изменяю Name
и использую context.update(user)
, но в этой строке :
var modifiedEntities = ChangeTracker.Entries()
.Where(p => p.State == EntityState.Added || p.State == EntityState.Modified).ToList();
Не могу найти недвижимость Name
.
как узнать, что список свойств был изменен или добавлен с помощью ChangingAndChangedNotifications
Стратегия ?????