public void TestHierarchyAfterMap() { LinqMapper.LinqMapper.CreateMap <ClassA, ProjectionClassA>(); LinqMapper.Materializer.RegisterAfterMap <BaseClassA>((o) => { o.Name = o.Name + "_base"; }); LinqMapper.Materializer.RegisterAfterMap <IClassA>((o) => { o.Name = o.Name + "_interface"; }); LinqMapper.Materializer.RegisterAfterMap <ProjectionClassA>((o) => { o.Name = o.Name + "_concrete"; }); ClassA[] objects = new ClassA[] { new ClassA() { Name = "my name" } }; var result = objects.AsQueryable().Materialize <ClassA, ProjectionClassA>().FirstOrDefault(); Assert.Equal(result.Name, "my name_interface_base_concrete"); }
public void TestDictionary() { LinqMapper.LinqMapper.CreateMap <ClassA, ProjectionClassA>(); LinqMapper.Materializer.RegisterAfterMap <KeyA>((o) => { o.KeyName = o.KeyName + "_keyAfterMap"; }); LinqMapper.Materializer.RegisterAfterMap <ProjectionClassA>((o) => { o.Name = o.Name + "_afterMap"; }); ClassA[] objects = new ClassA[] { new ClassA() { Name = "OriginalValue" } }; Stopwatch watch = Stopwatch.StartNew(); var result = objects.AsQueryable().Materialize <ClassA, ProjectionClassA>() .To(q => q.ToDictionary(a => new KeyA() { KeyName = "Key" + a.Name })); watch.Stop(); Stopwatch watch2 = Stopwatch.StartNew(); var result2 = objects.AsQueryable().Materialize <ClassA, ProjectionClassA>() .To(q => q.ToDictionary(a => new KeyA() { KeyName = "Key" + a.Name })); watch2.Stop(); Console.AppendLine("First run (ms): " + watch.Elapsed.TotalMilliseconds); Console.AppendLine("Second run (ms): " + watch2.Elapsed.TotalMilliseconds); Assert.Equal(result.First().Key.KeyName, "KeyOriginalValue_keyAfterMap"); Assert.Equal(result.First().Value.Name, "OriginalValue_afterMap"); }
public void SimpleTest() { LinqMapper.LinqMapper.CreateMap <ClassA, ProjectionClassA>(); LinqMapper.Materializer.RegisterAfterMap <ProjectionClassA>((o) => { o.Name = o.Name + "_afterMap"; }); ClassA[] objects = new ClassA[] { new ClassA() { Name = "my name" } }; var result = objects.AsQueryable().Materialize <ClassA, ProjectionClassA>().FirstOrDefault(); Assert.Equal(result.Name, "my name_afterMap"); }
public void TestWithContext() { LinqMapper.LinqMapper.CreateMap <ClassA, ProjectionClassA>() .CreateRuntimeMap <ContextA>((ctx) => runtimeMapA(ctx)); LinqMapper.Materializer.RegisterAfterMap <ProjectionClassA, ContextA>((o, ctx) => { o.Name = o.Name + ctx.MaterializeValue; }); ClassA[] objects = new ClassA[] { new ClassA() { Name = "my name" } }; var result = objects.AsQueryable().Materialize <ClassA, ProjectionClassA>() .Context(new ContextA() { LinqMapperValue = "B", MaterializeValue = "A" }) .ToList(); Assert.Equal(result[0].Name, "my nameBA"); }