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();
                }
            }
        }
Beispiel #2
0
        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");
        }