Skip to content

Commit b02ca4f

Browse files
committed
Merge branch 'development'
2 parents 1807656 + f7057bb commit b02ca4f

7 files changed

Lines changed: 22 additions & 9 deletions

File tree

build.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ task compile -depends clean {
3737
$buildSuffix = @{ $true = "$($suffix)-$($commitHash)"; $false = "$($branch)-$($commitHash)" }[$suffix -ne ""]
3838

3939
echo "build: Tag is $tag"
40-
echo "build: Package version suffix is $version"
40+
echo "build: Package version suffix is $suffix"
41+
echo "build: Build version suffix is $buildSuffix"
4142

4243
exec { .\.nuget\NuGet.exe restore $base_dir\AutoMapper.Collection.sln }
4344

src/AutoMapper.Collection-Signed/AutoMapper.Collection-Signed.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<Description>Collection Add/Remove/Update support for AutoMapper. AutoMapper.Collection adds EqualityComparison Expressions for TypeMaps to determine if Source and Destination type are equivalent to each other when mapping collections.</Description>
5-
<VersionPrefix>3.0.0</VersionPrefix>
5+
<VersionPrefix>3.0.1</VersionPrefix>
66
<Authors>Tyler Carlson</Authors>
77
<TargetFrameworks>net45;netstandard1.1;netstandard1.3</TargetFrameworks>
88
<AssemblyName>AutoMapper.Collection-Signed</AssemblyName>

src/AutoMapper.Collection.EntityFramework/AutoMapper.Collection.EntityFramework.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
<PropertyGroup>
44
<Description>Collection updating support for EntityFramework with AutoMapper. Extends DBSet&lt;T&gt; with Persist&lt;TDto&gt;().InsertUpdate(dto) and Persist&lt;TDto&gt;().Delete(dto). Will find the matching object and will Insert/Update/Delete.</Description>
5-
<VersionPrefix>3.0.0</VersionPrefix>
5+
<VersionPrefix>3.0.1</VersionPrefix>
66
<Authors>Tyler Carlson</Authors>
77
<TargetFramework>net45</TargetFramework>
88
<AssemblyName>AutoMapper.Collection.EntityFramework</AssemblyName>
99
<PackageId>AutoMapper.Collection.EntityFramework</PackageId>
1010
<PackageIconUrl>https://s3.amazonaws.com/automapper/icon.png</PackageIconUrl>
1111
<PackageProjectUrl>https://github.com/AutoMapper/Automapper.Collection</PackageProjectUrl>
1212
<PackageLicenseUrl>https://github.com/AutoMapper/AutoMapper.Collection/blob/master/LICENSE.txt</PackageLicenseUrl>
13-
<Version>3.0.1</Version>
1413
</PropertyGroup>
1514

1615
<ItemGroup>

src/AutoMapper.Collection.LinqToSQL/AutoMapper.Collection.LinqToSQL.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
<PropertyGroup>
44
<Description>Collection updating support for LinqToSQL with AutoMapper. Extends Table&lt;T&gt; with Persist&lt;TDto&gt;().InsertUpdate(dto) and Persist&lt;TDto&gt;().Delete(dto). Will find the matching object and will Insert/Update/Delete.</Description>
5-
<VersionPrefix>3.0.0</VersionPrefix>
5+
<VersionPrefix>3.0.1</VersionPrefix>
66
<Authors>Tyler Carlson</Authors>
77
<TargetFramework>net45</TargetFramework>
88
<AssemblyName>AutoMapper.Collection.LinqToSQL</AssemblyName>
99
<PackageId>AutoMapper.Collection.LinqToSQL</PackageId>
1010
<PackageIconUrl>https://s3.amazonaws.com/automapper/icon.png</PackageIconUrl>
1111
<PackageProjectUrl>https://github.com/AutoMapper/Automapper.Collection</PackageProjectUrl>
1212
<PackageLicenseUrl>https://github.com/AutoMapper/AutoMapper.Collection/blob/master/LICENSE.txt</PackageLicenseUrl>
13-
<Version>3.0.1</Version>
1413
</PropertyGroup>
1514

1615
<ItemGroup>

src/AutoMapper.Collection.Tests/MapCollectionWithEquality.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ public void Should_Update_Existing_Item()
5050
Mapper.Map(dtos, items.ToList()).Should().HaveElementAt(0, items.First());
5151
}
5252

53+
public void Should_Be_Fast_With_Large_Lists()
54+
{
55+
var dtos = new object[100000].Select((_, i) => new ThingDto {ID = i}).ToList();
56+
57+
var items = new object[100000].Select((_, i) => new Thing { ID = i }).ToList();
58+
59+
Mapper.Map(dtos, items.ToList()).Should().HaveElementAt(0, items.First());
60+
}
61+
5362
public void Should_Work_With_Null_Destination()
5463
{
5564
var dtos = new List<ThingDto>

src/AutoMapper.Collection/AutoMapper.Collection.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<Description>Collection Add/Remove/Update support for AutoMapper. AutoMapper.Collection adds EqualityComparison Expressions for TypeMaps to determine if Source and Destination type are equivalent to each other when mapping collections.</Description>
5-
<VersionPrefix>3.0.0</VersionPrefix>
5+
<VersionPrefix>3.0.1</VersionPrefix>
66
<Authors>Tyler Carlson</Authors>
77
<TargetFrameworks>net45;netstandard1.1;netstandard1.3</TargetFrameworks>
88
<AssemblyName>AutoMapper.Collection</AssemblyName>
@@ -11,7 +11,6 @@
1111
<PackageProjectUrl>https://github.com/AutoMapper/Automapper.Collection</PackageProjectUrl>
1212
<PackageLicenseUrl>https://github.com/AutoMapper/AutoMapper.Collection/blob/master/LICENSE.txt</PackageLicenseUrl>
1313
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netstandard1.1' ">$(PackageTargetFallback);portable-net45+win8+dnxcore50;portable-net45+win8</PackageTargetFallback>
14-
<Version>3.0.1</Version>
1514
</PropertyGroup>
1615

1716
<ItemGroup>

src/AutoMapper.Collection/Mappers/EquivalentExpressionAddRemoveCollectionMapper.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ public static TDestination Map<TSource, TSourceItem, TDestination, TDestinationI
2121
if (source == null || destination == null)
2222
return destination;
2323

24-
var compareSourceToDestination = source.ToDictionary(s => s, s => destination.FirstOrDefault(d => EquivalencyExpression.IsEquivalent(s, d)));
24+
var destList = destination.ToList();
25+
var compareSourceToDestination = source.ToDictionary(s => s, s =>
26+
{
27+
var match = destList.FirstOrDefault(d => EquivalencyExpression.IsEquivalent(s, d));
28+
destList.Remove(match);
29+
return match;
30+
});
2531

2632
foreach (var removedItem in destination.Except(compareSourceToDestination.Values).ToList())
2733
destination.Remove(removedItem);

0 commit comments

Comments
 (0)