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"); }); } } }
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"); }); } } }