Пример #1
0
        public void LinqTranslations_CalculatedAttribute_DirectCircularDependencyFails()
        {
            var a = new A()
            {
                Value = "a"
            };

            using (var connection = Effort.DbConnectionFactory.CreateTransient())
            {
                using (var context = new DemoContext(connection))
                {
                    context.As.Add(a);
                    context.SaveChanges();
                }

                using (var context = new DemoContext(connection))
                {
                    var qry = from m in context.As
                              select m.Value;
                    Assert.Throws <CircularReferenceException>(() =>
                    {
                        Assert.AreEqual(a.Value, qry.WithTranslations().First(), "A override wrong");
                    });
                }
            }
        }
Пример #2
0
        public void LinqTranslations_CalculatedAttribute_InDirectCircularDependencyUsingNoTranslateSucceeds()
        {
            var a = new A()
            {
                Value = "a", Value6 = "underlying value6 for a"
            };

            using (var connection = Effort.DbConnectionFactory.CreateTransient())
            {
                using (var context = new DemoContext(connection))
                {
                    context.As.Add(a);
                    context.SaveChanges();
                }

                using (var context = new DemoContext(connection))
                {
                    var qry = from m in context.As
                              select m.Value6;
                    Assert.Multiple(() =>
                    {
                        Assert.AreEqual(a.Value6, qry.WithTranslations().First(), "A override wrong");
                    });
                }
            }
        }
        private void SeedContext(DemoContext context)
        {
            //seed some data in
            var demo = new DemoBaseClass()
            {
                ClassName = "DemoBaseClass", NormalAttribute = "TEST"
            };

            context.DemoBaseClasses.Add(demo);

            var demo1 = new DemoDerivedClass1()
            {
                ClassName = "DemoDerivedClass1", NormalAttribute = "TEST1"
            };

            context.DemoDerivedClassOnes.Add(demo1);

            var demo2 = new DemoDerivedClass2()
            {
                ClassName = "DemoDerivedClass2", NormalAttribute = "TEST2"
            };

            context.DemoDerivedClassTwos.Add(demo2);

            var demo3 = new DemoDerivedClass3()
            {
                ClassName = "DemoDerivedClass3", NormalAttribute = "TEST3"
            };

            context.DemoDerivedClassThrees.Add(demo3);

            context.SaveChanges();
        }
        public void LinqTranslations_CalculatedAttribute_DbIsOfExpressionOnBaseClass()
        {
            var a = new A()
            {
                Value = "a"
            };
            var b = new B()
            {
                Value = "b"
            };
            var c = new C()
            {
                Value = "c"
            };

            using (var connection = Effort.DbConnectionFactory.CreateTransient())
            {
                using (var context = new DemoContext(connection))
                {
                    context.As.Add(a);
                    context.Bs.Add(b);
                    context.Cs.Add(c);
                    context.SaveChanges();
                }

                using (var context = new DemoContext(connection))
                {
                    var qry = from m in context.Cs
                              orderby m.Value
                              select m.Calc;
                    var items = qry.WithTranslations().ToArray();
                    Assert.Multiple(() =>
                    {
                        Assert.AreEqual(c.Calc, items[0], "C override wrong");
                    });
                }
            }
        }
        public void LinqTranslations_CalculatedAttribute_OverrideBehaviourRuntimeType()
        {
            var g = new G()
            {
                Value = "g"
            };
            var f = new F()
            {
                Value = "f"
            };
            var e = new E()
            {
                Value = "e"
            };
            var d = new D()
            {
                Value = "d"
            };
            var c = new C()
            {
                Value = "c"
            };
            var b = new B()
            {
                Value = "b"
            };
            var a = new A()
            {
                Value = "a"
            };

            using (var connection = Effort.DbConnectionFactory.CreateTransient())
            {
                using (var context = new DemoContext(connection))
                {
                    context.As.Add(a);
                    context.Bs.Add(b);
                    context.Cs.Add(c);
                    context.Ds.Add(d);
                    context.Es.Add(e);
                    context.Fs.Add(f);
                    context.Gs.Add(g);
                    context.SaveChanges();
                }

                using (var context = new DemoContext(connection))
                {
                    var qry = from m in context.As
                              orderby m.Value
                              select m.Calc;
                    var items = qry.WithTranslations().ToArray();
                    Assert.Multiple(() =>
                    {
                        Assert.AreEqual(a.Calc, items[0], "A override wrong");
                        Assert.AreEqual(b.Calc, items[1], "B override wrong");
                        Assert.AreEqual(c.Calc, items[2], "C override wrong");
                        Assert.AreEqual(d.Calc, items[3], "D override wrong");
                        Assert.AreEqual(e.Calc, items[4], "E override wrong");
                        Assert.AreEqual(f.Calc, items[5], "F override wrong");
                        Assert.AreEqual(g.Calc, items[6], "G override wrong");
                    });
                }
            }
        }