public void Add_new_entity()
        {
            int        userId = 1;
            bool       isSetForeignKeysActionCalled = false;
            MockEntity entity = new MockEntity();

            Action <IDbEntity, MockEntity> setForeignKeys       = (o, e) => { isSetForeignKeysActionCalled = true; };
            ForeignEntityCollectionManager <MockEntity> manager = new ForeignEntityCollectionManager <MockEntity>(userId, entity, () => entity.RelationalEntities, setForeignKeys);

            MockEntity added = manager.Add();

            Assert.AreEqual(1, entity.RelationalEntities.Count);
            Assert.AreEqual(added, entity.RelationalEntities.First());
            Assert.IsTrue(isSetForeignKeysActionCalled);
            Assert.IsFalse(added.IsDeleted);
            Assert.AreEqual(userId, added.CreatedByID);
        }
        public void ReAdd_previously_deleted_entity()
        {
            int        userId = 1;
            bool       isSetForeignKeysActionCalled = false;
            MockEntity entity = new MockEntity();

            Action <IDbEntity, MockEntity> setForeignKeys       = (o, e) => { isSetForeignKeysActionCalled = true; };
            ForeignEntityCollectionManager <MockEntity> manager = new ForeignEntityCollectionManager <MockEntity>(userId, entity, () => entity.RelationalEntities, setForeignKeys);

            MockEntity existing = new MockEntity()
            {
                id = 2, IsDeleted = true, CreatedByID = 3
            };

            existing.MarkPersisted();
            entity.RelationalEntities.Add(existing);
            MockEntity added = manager.Add(existing);

            Assert.AreEqual(1, entity.RelationalEntities.Count);
            Assert.AreEqual(added, existing);
            Assert.IsFalse(isSetForeignKeysActionCalled);
            Assert.IsFalse(added.IsDeleted);
            Assert.AreNotEqual(userId, added.CreatedByID);
        }