public void OnSave(ChangeTracker tracker) { var entries = tracker.Entries <IExternalIdentifierBehaviour>(); foreach (var entry in entries) { var entity = entry.Entity; if (entry.State == EntityState.Added && !ExternalId.TryParse(entity.ExternalId, out _)) { entity.ExternalId = ExternalId.Create().ToString(); } } }
public void CreatesNewExternalIdentifierForNewEntities() { OnSaveHandler.Handler = ct => { var entry = ct.Entries <IExternalIdentifierBehaviour>().First(); Assert.IsNotNull(entry.Entity.ExternalId, $"Expecting {entry.Entity.ExternalId} to be not null"); Assert.IsTrue(ExternalId.TryParse(entry.Entity.ExternalId, out var _), $"Expecting {nameof(entry.Entity.ExternalId)} to be a valid ExternalId"); }; var post = new Post { Body = "ExternalId post" }; Context.Posts.Add(post); Context.SaveChanges(); Assert.IsTrue(OnSaveHandler.IsCalled, "OnSaveHandler has not been called"); }