Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
        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");
        }
Ejemplo n.º 3
0
        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");
        }
Ejemplo n.º 4
0
        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");
        }