private static void Assert(ParentEntity parentEntity, bool useGraphDiff)
        {
            using (var context = new SimpleContext())
            {
                var persistedParentEntity = context.ParentEntities.Find(parentEntity.Id);

                context.Entry(persistedParentEntity)
                .Collection(x => x.ChildEntities).Load();

                context.Entry(persistedParentEntity)
                .Collection(x => x.ChildReferencingChildEntities).Load();

                NUnit.Framework.Assert.That(persistedParentEntity.Id, Is.EqualTo(parentEntity.Id));
                NUnit.Framework.Assert.That(persistedParentEntity.Name, Is.EqualTo(parentEntity.Name));
                NUnit.Framework.Assert.That(persistedParentEntity.ChildEntities.Count,
                                            (useGraphDiff) ? Is.EqualTo(parentEntity.ChildEntities.Count)
                        : Is.EqualTo(parentEntity.ChildEntities.Count(x => x.Id != default(long))));
                NUnit.Framework.Assert.That(persistedParentEntity.ChildReferencingChildEntities.Count,
                                            (useGraphDiff) ? Is.EqualTo(parentEntity.ChildReferencingChildEntities.Count)
                        : Is.EqualTo(parentEntity.ChildReferencingChildEntities.Count(x => x.Id != default(long))));


                // where not using graphdiff - compare that the existing entities are the same
                var zippedChildren = persistedParentEntity.ChildEntities.Zip(
                    (useGraphDiff) ? parentEntity.ChildEntities : parentEntity.ChildEntities.Where(x => x.Id != default(long)),
                    (persisted, entity) => new { Persisted = persisted, Entity = entity });

                foreach (var persistedAndEntity in zippedChildren)
                {
                    NUnit.Framework.Assert.That(persistedAndEntity.Persisted.Name, Is.EqualTo(persistedAndEntity.Entity.Name));
                    NUnit.Framework.Assert.That(persistedAndEntity.Persisted.ParentEntityId,
                                                Is.EqualTo(persistedAndEntity.Entity.ParentEntityId));
                }

                var zippedChildReferencingChildren =
                    persistedParentEntity.ChildReferencingChildEntities.Zip(
                        parentEntity.ChildReferencingChildEntities.Where(x => x.Id != default(long)),
                        (persisted, entity) => new { Persisted = persisted, Entity = entity });

                foreach (var persistedAndEntity in zippedChildReferencingChildren)
                {
                    NUnit.Framework.Assert.That(persistedAndEntity.Persisted.Name, Is.EqualTo(persistedAndEntity.Entity.Name));
                    NUnit.Framework.Assert.That(persistedAndEntity.Persisted.ParentEntityId,
                                                Is.EqualTo(persistedAndEntity.Entity.ParentEntityId));
                    NUnit.Framework.Assert.That(persistedAndEntity.Persisted.ChildEntityId,
                                                Is.EqualTo(
                                                    persistedAndEntity.Entity.ChildEntityId == default(long) ?
                                                    3 : persistedAndEntity.Entity.ChildEntityId)); // should be added by graphdiff
                }
            }
        }
        public virtual void Update(TEntity entity, bool commit = true, bool setUpdatedAt = true)
        {
            TEntity oldEntity = Set.AsNoTracking().SingleOrDefault(s => s.Id == entity.Id);

            entity.CreatedAt = oldEntity.CreatedAt;

            if (setUpdatedAt)
            {
                entity.UpdatedAt = DateTimeOffset.Now;
            }

            _context.Entry(entity).State = EntityState.Modified;

            if (commit)
            {
                this.Commit();
            }
        }
        public void Update(TEntity entity, bool commit = true)
        {
            _context.Entry(entity).State = EntityState.Modified;

            if (commit)
            {
                this.Commit();
            }
        }
Beispiel #4
0
 public ActionResult Edit([Bind(Include = "Id,GroupName")] Group group)
 {
     if (ModelState.IsValid)
     {
         db.Entry(group).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(group));
 }