예제 #1
0
        public void Adding_entities_with_shadow_keys_should_not_throw()
        {
            using (var context = new NullShadowKeyContext())
            {
                var assembly = new TestAssembly {
                    Name = "Assembly1"
                };
                var testClass = new TestClass {
                    Assembly = assembly, Name = "Class1"
                };
                var test = context.Tests.Add(new Test {
                    Class = testClass, Name = "Test1"
                }).Entity;

                context.SaveChanges();

                ValidateGraph(context, assembly, testClass, test);
            }

            using (var context = new NullShadowKeyContext())
            {
                var test      = context.Tests.Single();
                var assembly  = context.Assemblies.Single();
                var testClass = context.Classes.Single();

                ValidateGraph(context, assembly, testClass, test);
            }
        }
예제 #2
0
        private static void ValidateGraph(NullShadowKeyContext context, TestAssembly assembly, TestClass testClass, Test test)
        {
            Assert.Equal(EntityState.Unchanged, context.Entry(assembly).State);
            Assert.Equal("Assembly1", assembly.Name);
            Assert.Same(testClass, test.Class);

            Assert.Equal(EntityState.Unchanged, context.Entry(testClass).State);
            Assert.Equal("Class1", testClass.Name);
            Assert.Equal("Assembly1", context.Entry(testClass).Property("AssemblyName").CurrentValue);
            Assert.Same(test, testClass.Tests.Single());
            Assert.Same(assembly, testClass.Assembly);

            Assert.Equal(EntityState.Unchanged, context.Entry(test).State);
            Assert.Equal("Test1", test.Name);
            Assert.Equal("Assembly1", context.Entry(test).Property("AssemblyName").CurrentValue);
            Assert.Equal("Class1", context.Entry(test).Property("ClassName").CurrentValue);
            Assert.Same(testClass, assembly.Classes.Single());
        }