NickStrupat / EntityFramework.Triggers

Adds events for entity inserting, inserted, updating, updated, deleting, and deleted
MIT License
373 stars 46 forks source link

Properties are not being persisted inside Updating event #40

Closed joshua-mng closed 5 years ago

joshua-mng commented 5 years ago

I'm having this strange bug.

Let's say I have this entity:

` public class Subscription { public long Id {get;set;} public decimal Amount {get;set;} public bool IsPaid {get;set;} public DateTime? PaidOnUtc {get;set;} }

when I update, like this, Triggers.Updating += context => { context.Entity.Amount = 30.0M; };

using (var myTriggerContext = new MyTriggerContext()) { var existingSub = myTriggerContext.Subscriptions.FirstOrDefault(x => x.Id == 30); existingSub.PaidOnUtc = DateTime.UtcNow; await myTriggerContext.SaveChangesAsync(); } `

Amount prop is never getting persisted. It persists only when following: 1) When I set Amount property explicity like: existingSub.Amount = 10M; 2) or when I call context.ChangeTracker.DetectChanges() method inside Updating event handler.

It seems to me that when we change entities inside Updating event handler, change tracker's DetectChanges method is not being called automatically in the base context's SaveChanges method.

Could you clarify the issue?

Thanks

NickStrupat commented 5 years ago

is your MyTriggerContext class inheriting from DbContextWithTriggers?