예제 #1
0
        public void ShouldAddNewAggregateRoot_Detached()
        {
            var associated = new OneToOneAssociatedModel {
                Title = "Associated"
            };
            var manyAssociated = new OneToManyAssociatedModel {
                Title = "Associated"
            };
            var node1 = new TestNode
            {
                Title          = "New Node",
                OneToManyOwned = new List <OneToManyOwnedModel>
                {
                    new OneToManyOwnedModel {
                        Title = "One"
                    },
                    new OneToManyOwnedModel {
                        Title = "Two"
                    },
                    new OneToManyOwnedModel {
                        Title = "Three"
                    }
                },
                OneToManyAssociated = new List <OneToManyAssociatedModel>
                {
                    manyAssociated
                },
                OneToOneOwned = new OneToOneOwnedModel {
                    Title = "OneToOne"
                },
                OneToOneAssociated = associated
            };

            using (var context = new TestDbContext())
            {
                context.OneToManyAssociatedModels.Add(manyAssociated);
                context.OneToOneAssociatedModels.Add(associated);
                context.SaveChanges();
            } // Simulate detach

            using (var context = new TestDbContext())
            {
                // Setup mapping
                node1 = context.UpdateGraph(node1, map => map
                                            .OwnedEntity(p => p.OneToOneOwned)
                                            .AssociatedEntity(p => p.OneToOneAssociated)
                                            .OwnedCollection(p => p.OneToManyOwned, with => with.OwnedEntity(p => p.OneToManyOneToOneOwned))
                                            .AssociatedCollection(p => p.OneToManyAssociated));

                context.SaveChanges();
                Assert.IsNotNull(context.Nodes.SingleOrDefault(p => p.Id == node1.Id));
            }
        }
예제 #2
0
        public void ShouldAddRelationToExistingAssociatedCollection()
        {
            var associated = new OneToManyAssociatedModel {
                Title = "Second One"
            };
            var node1 = new TestNode
            {
                Title = "New Node",
                OneToManyAssociated = new List <OneToManyAssociatedModel>
                {
                    new OneToManyAssociatedModel {
                        Title = "First One"
                    }
                }
            };

            using (var context = new TestDbContext())
            {
                context.Nodes.Add(node1);
                context.OneToManyAssociatedModels.Add(associated);
                context.SaveChanges();
            } // Simulate detach

            node1.OneToManyAssociated.Add(associated);

            using (var context = new TestDbContext())
            {
                // Setup mapping
                context.UpdateGraph(node1, map => map
                                    .AssociatedCollection(p => p.OneToManyAssociated));

                context.SaveChanges();
                var node2 = context.Nodes.Include(p => p.OneToManyAssociated).Single(p => p.Id == node1.Id);
                Assert.IsNotNull(node2);
                Assert.IsTrue(node2.OneToManyAssociated.Count == 2);
            }
        }