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