Skip to content

Commit b69743e

Browse files
committed
Fixes includes mapping broken by 3.0.4 (Fix setting the correct type for GroupBy.SelectMany).
1 parent 173b059 commit b69743e

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<Authors>Jimmy Bogard</Authors>
44
<LangVersion>latest</LangVersion>
5-
<VersionPrefix>3.0.4</VersionPrefix>
5+
<VersionPrefix>3.0.5-preview01</VersionPrefix>
66
<WarningsAsErrors>true</WarningsAsErrors>
77
<NoWarn>$(NoWarn);1701;1702;1591</NoWarn>
88
</PropertyGroup>

src/AutoMapper.Extensions.ExpressionMapping/MapIncludesVisitor.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@ public MapIncludesVisitor(IMapper mapper, IConfigurationProvider configurationPr
1616
{
1717
}
1818

19+
protected override Expression VisitLambda<T>(Expression<T> node)
20+
{
21+
var ex = this.Visit(node.Body);
22+
23+
var mapped = Expression.Lambda(ex, node.GetDestinationParameterExpressions(this.InfoDictionary, this.TypeMappings));
24+
this.TypeMappings.AddTypeMapping(ConfigurationProvider, node.Type, mapped.Type);
25+
return mapped;
26+
}
27+
1928
protected override Expression VisitMember(MemberExpression node)
2029
{
2130
var parameterExpression = node.GetParameterExpression();

tests/AutoMapper.Extensions.ExpressionMapping.UnitTests/XpressionMapperTests.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,20 @@ public void Map_includes_with_string()
7878
Assert.True(accounts.Count == 2);
7979
}
8080

81+
[Fact]
82+
public void Map_collection_includes_with_flattened_string()
83+
{
84+
//Arrange
85+
Expression<Func<UserModel, IEnumerable<string>>> selection = s => s.AccountModel.ThingModels.Select<ThingModel, string>(x => x.Color);
86+
87+
//Act
88+
Expression<Func<User, IEnumerable<Car>>> selectionMapped = mapper.MapExpressionAsInclude<Expression<Func<User, IEnumerable<Car>>>>(selection);
89+
List<Car> cars = Users.SelectMany(selectionMapped).ToList();
90+
91+
//Assert
92+
Assert.True(cars.Count == 4);
93+
}
94+
8195
[Fact]
8296
public void Map_includes_trim_string_nested_in_select_using_object()
8397
{

0 commit comments

Comments
 (0)