public void MappingTest()
        {
            var emStrategy   = new EntityModelMappingStrategy();
            var cogmStrategy = new ChildOfGuidMappingStrategy();
            var pogmStrategy = new ParentOfGuidMappingStrategy();

            Action <ModelBuilder> mappingAction = modelBuild =>
            {
                emStrategy.Mapping(modelBuild, typeof(OneOfInt32EntityModel));
                cogmStrategy.Mapping(modelBuild, typeof(OneOfInt32EntityModel));
                pogmStrategy.Mapping(modelBuild, typeof(ManyOfInt32EntityModel));
            };

            using (var context = new DbContextByMappingStrategy(mappingAction))
            {
                var oneEntityModel = new OneOfInt32EntityModel
                {
                    CountOfChild = 10,
                    Children     = new List <ManyOfInt32EntityModel>(10)
                };
                for (int i = 0; i < 10; i++)
                {
                    oneEntityModel.Children.Add(new ManyOfInt32EntityModel {
                        Parent = oneEntityModel
                    });
                }

                context.Add(oneEntityModel);
                Assert.Equal(11, context.SaveChanges());
            }

            using (var context = new DbContextByMappingStrategy(mappingAction))
            {
                var data = context.Set <OneOfInt32EntityModel>()
                           .Include(one => one.Children)
                           .SingleOrDefault();

                Assert.NotNull(data);
                Assert.NotEqual(0, data.Id);
                Assert.Equal(10, data.CountOfChild);
                Assert.NotNull(data.Children);
                Assert.Equal(10, data.Children.Count);
                Assert.All(data.Children.AsEnumerable(), child =>
                {
                    Assert.NotEqual(0, child.Id);
                    Assert.Equal(data.Id, child.ParentId);
                    Assert.NotNull(child.Parent);
                    Assert.Equal(child.ParentId, child.Parent.Id);
                });
            }
        }
        public void MappingTest()
        {
            var emStrategy = new EntityModelMappingStrategy();
            var nmStrategy = new NoteMappingStrategy();

            Action <ModelBuilder> action = builder =>
            {
                emStrategy.Mapping(builder, typeof(NoteOfEntityModel));
                nmStrategy.Mapping(builder, typeof(NoteOfEntityModel));
            };

            using (var context = new DbContextByMappingStrategy(action))
            {
                for (int i = 0; i < 10; i++)
                {
                    context.Add(new NoteOfEntityModel
                    {
                        Note       = $"Note_{i}",
                        SecondNote = $"SecondNote_{i}",
                        ThirdNote  = $"ThirdNote_{i}"
                    });
                }

                context.SaveChanges();
            }

            using (var context = new DbContextByMappingStrategy(action))
            {
                var datas = context.Notes.ToList();
                Assert.NotNull(datas);
                Assert.Equal(10, datas.Count);
                for (int i = 0; i < 10; i++)
                {
                    Assert.NotEqual(Guid.Empty, datas[i].Id);
                    Assert.Equal($"Note_{i}", datas[i].Note);
                    Assert.Equal($"SecondNote_{i}", datas[i].SecondNote);
                    Assert.Equal($"ThirdNote_{i}", datas[i].ThirdNote);
                }
            }
        }
        public void MappingTest()
        {
            var strategy = new EntityModelMappingStrategy();

            using (var context = new DbContextByMappingStrategy(builder => strategy.Mapping(builder, typeof(EntityModel.EntityModel))))
            {
                for (int i = 0; i < 10; i++)
                {
                    context.Add(new EntityModel.EntityModel());
                }

                context.SaveChanges();
            }

            using (var context = new DbContextByMappingStrategy(builder => strategy.Mapping(builder, typeof(EntityModel.EntityModel))))
            {
                var datas = context.Set <EntityModel.EntityModel>().ToList();
                Assert.NotNull(datas);
                Assert.Equal(10, datas.Count);
                Assert.All(datas, data => Assert.NotEqual(Guid.Empty, data.Id));
            }
        }