コード例 #1
0
        public void MediatorTypeHasParameterlessCtor()
        {
            var mediatorTypeBuilder = new MediatorTypeBuilder();
            var targetType          = typeof(EmptyType);
            var graph = new TargetTypeGraph();

            graph.AddNode(targetType);
            var mediatorMapper = mediatorTypeBuilder.CreateMediatorTypes(graph);

            var mediatorType = mediatorMapper.GetMediatorType(targetType);

            mediatorType.Should().HaveDefaultConstructor();
        }
コード例 #2
0
        public void SelectWithMultiplePropertyChain_IsProperlyMaterialized()
        {
            using (var connection = new SQLiteConnection("data source=:memory:"))
            {
                connection.Open();
                using (var ctx = new OrderContext(connection))
                {
                    var order = new Order
                    {
                        Items = new List <OrderItem>
                        {
                            new OrderItem
                            {
                                Product = new Product {
                                    Name = "Diapers", Cost = 10.0m
                                },
                                Quantity = 5,
                            },
                            new OrderItem
                            {
                                Product = new Product {
                                    Name = "Baby formula", Cost = 50m
                                },
                                Quantity = 3,
                            },
                        },
                    };
                    ctx.Orders.Add(order);
                    ctx.SaveChanges();

                    var config = new ConversionConfiguration()
                    {
                        IsAllowedForColumn = x => x.IsValueType || x == typeof(string),
                    };
                    var searcher       = new GraphSearcher(config);
                    var graph          = searcher.SearchGraph(typeof(B));
                    var mediatorMapper = new MediatorTypeBuilder().CreateMediatorTypes(graph);
                    var result         = ctx.OrderItems.ProjectToList(
                        x => new B
                    {
                        ProductCost = x.Product.Cost,
                    },
                        mediatorMapper);
                    result.Select(x => x.ProductCost).Should().BeEquivalentTo(10m, 50m);
                }
            }
        }
コード例 #3
0
        private void AssertTargetToMediator <TParameter, TResult>(
            Expression <Func <TParameter, TResult> > projection,
            string resultTargetToMediator)
        {
            var config = new ConversionConfiguration()
            {
                IsAllowedForColumn = x => x.IsValueType || x == typeof(string),
            };
            var searcher = new GraphSearcher(config);
            var graph    = searcher.SearchGraph(typeof(TResult));

            var mediatorMapper = new MediatorTypeBuilder().CreateMediatorTypes(graph);

            var targetToMediatorVisitor = new TargetToMediatorVisitor(mediatorMapper);
            var result = targetToMediatorVisitor.Visit(projection);

            result.ToString("C#").Should().Be(resultTargetToMediator.Trim());
        }