diff --git a/AgileMapper.PerformanceTester.Net45/AgileMapper.PerformanceTester.Net45.csproj b/AgileMapper.PerformanceTester.Net45/AgileMapper.PerformanceTester.Net45.csproj
index cf7abc181..6d774bf3e 100644
--- a/AgileMapper.PerformanceTester.Net45/AgileMapper.PerformanceTester.Net45.csproj
+++ b/AgileMapper.PerformanceTester.Net45/AgileMapper.PerformanceTester.Net45.csproj
@@ -37,8 +37,8 @@
..\packages\AgileObjects.NetStandardPolyfills.1.4.0\lib\net40\AgileObjects.NetStandardPolyfills.dll
-
- ..\packages\AgileObjects.ReadableExpressions.2.1.0\lib\net40\AgileObjects.ReadableExpressions.dll
+
+ ..\packages\AgileObjects.ReadableExpressions.2.1.1\lib\net40\AgileObjects.ReadableExpressions.dll
..\packages\AutoMapper.7.0.1\lib\net45\AutoMapper.dll
@@ -46,8 +46,8 @@
..\packages\Expressmapper.1.9.1\lib\net45\ExpressMapper.dll
-
- ..\packages\Mapster.3.2.0\lib\net45\Mapster.dll
+
+ ..\packages\Mapster.3.3.1\lib\net45\Mapster.dll
..\packages\ValueInjecter.3.1.3\lib\net45\Omu.ValueInjecter.dll
diff --git a/AgileMapper.PerformanceTester.Net45/packages.config b/AgileMapper.PerformanceTester.Net45/packages.config
index 92d57fe9a..fcd3dee54 100644
--- a/AgileMapper.PerformanceTester.Net45/packages.config
+++ b/AgileMapper.PerformanceTester.Net45/packages.config
@@ -1,10 +1,10 @@
-
+
-
+
\ No newline at end of file
diff --git a/AgileMapper.PerformanceTester.NetCore21/AgileMapper.PerformanceTester.NetCore21.csproj b/AgileMapper.PerformanceTester.NetCore21/AgileMapper.PerformanceTester.NetCore21.csproj
index 420da1489..62060b4bf 100644
--- a/AgileMapper.PerformanceTester.NetCore21/AgileMapper.PerformanceTester.NetCore21.csproj
+++ b/AgileMapper.PerformanceTester.NetCore21/AgileMapper.PerformanceTester.NetCore21.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/AgileMapper.PerformanceTesting/AgileMapper.PerformanceTesting.csproj b/AgileMapper.PerformanceTesting/AgileMapper.PerformanceTesting.csproj
index c06fe05e4..6a4ff3140 100644
--- a/AgileMapper.PerformanceTesting/AgileMapper.PerformanceTesting.csproj
+++ b/AgileMapper.PerformanceTesting/AgileMapper.PerformanceTesting.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/AgileMapper.UnitTests.Net35/AgileMapper.UnitTests.Net35.csproj b/AgileMapper.UnitTests.Net35/AgileMapper.UnitTests.Net35.csproj
index 0e0c4f28a..7f64f66af 100644
--- a/AgileMapper.UnitTests.Net35/AgileMapper.UnitTests.Net35.csproj
+++ b/AgileMapper.UnitTests.Net35/AgileMapper.UnitTests.Net35.csproj
@@ -37,8 +37,8 @@
..\packages\AgileObjects.NetStandardPolyfills.1.4.0\lib\net35\AgileObjects.NetStandardPolyfills.dll
-
- ..\packages\AgileObjects.ReadableExpressions.2.1.0\lib\net35\AgileObjects.ReadableExpressions.dll
+
+ ..\packages\AgileObjects.ReadableExpressions.2.1.1\lib\net35\AgileObjects.ReadableExpressions.dll
..\packages\DynamicLanguageRuntime.1.1.2\lib\Net35\Microsoft.Dynamic.dll
diff --git a/AgileMapper.UnitTests.Net35/packages.config b/AgileMapper.UnitTests.Net35/packages.config
index e4f4503b6..737e3b5da 100644
--- a/AgileMapper.UnitTests.Net35/packages.config
+++ b/AgileMapper.UnitTests.Net35/packages.config
@@ -1,7 +1,7 @@
-
+
diff --git a/AgileMapper.UnitTests.NetCore2.1/AgileMapper.UnitTests.NetCore2.1.csproj b/AgileMapper.UnitTests.NetCore2.1/AgileMapper.UnitTests.NetCore2.1.csproj
index 73ed7fdf7..d6d85e595 100644
--- a/AgileMapper.UnitTests.NetCore2.1/AgileMapper.UnitTests.NetCore2.1.csproj
+++ b/AgileMapper.UnitTests.NetCore2.1/AgileMapper.UnitTests.NetCore2.1.csproj
@@ -31,7 +31,7 @@
-
+
diff --git a/AgileMapper.UnitTests.NetCore2.2/AgileMapper.UnitTests.NetCore2.2.csproj b/AgileMapper.UnitTests.NetCore2.2/AgileMapper.UnitTests.NetCore2.2.csproj
new file mode 100644
index 000000000..170bb8528
--- /dev/null
+++ b/AgileMapper.UnitTests.NetCore2.2/AgileMapper.UnitTests.NetCore2.2.csproj
@@ -0,0 +1,63 @@
+
+
+
+
+ netcoreapp2.2
+ true
+ AgileObjects.AgileMapper.UnitTests.NetCore2_1
+ AgileObjects.AgileMapper.UnitTests.NetCore2_1
+ true
+ 2.2.2
+ false
+ false
+ false
+ false
+ false
+ AgileObjects.AgileMapper.UnitTests.NetCore2
+
+
+
+ TRACE;DEBUG;NETCOREAPP2_0;NET_STANDARD
+
+
+
+ TRACE;RELEASE;NETCOREAPP2_0;NET_STANDARD
+
+
+
+
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers
+
+
+
+
+
+
+
+
+
+
+
+ %(RecursiveDir)%(Filename)%(Extension)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AgileMapper.UnitTests.NonParallel/AgileMapper.UnitTests.NonParallel.csproj b/AgileMapper.UnitTests.NonParallel/AgileMapper.UnitTests.NonParallel.csproj
index 1fc3c9e92..ab86a47df 100644
--- a/AgileMapper.UnitTests.NonParallel/AgileMapper.UnitTests.NonParallel.csproj
+++ b/AgileMapper.UnitTests.NonParallel/AgileMapper.UnitTests.NonParallel.csproj
@@ -42,8 +42,8 @@
..\packages\AgileObjects.NetStandardPolyfills.1.4.0\lib\net40\AgileObjects.NetStandardPolyfills.dll
-
- ..\packages\AgileObjects.ReadableExpressions.2.1.0\lib\net40\AgileObjects.ReadableExpressions.dll
+
+ ..\packages\AgileObjects.ReadableExpressions.2.1.1\lib\net40\AgileObjects.ReadableExpressions.dll
@@ -89,7 +89,9 @@
-
+
+ Designer
+
diff --git a/AgileMapper.UnitTests.NonParallel/app.config b/AgileMapper.UnitTests.NonParallel/app.config
index b1d125491..dc349b495 100644
--- a/AgileMapper.UnitTests.NonParallel/app.config
+++ b/AgileMapper.UnitTests.NonParallel/app.config
@@ -6,6 +6,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/AgileMapper.UnitTests.NonParallel/packages.config b/AgileMapper.UnitTests.NonParallel/packages.config
index 574dc374e..4f52878b7 100644
--- a/AgileMapper.UnitTests.NonParallel/packages.config
+++ b/AgileMapper.UnitTests.NonParallel/packages.config
@@ -1,7 +1,7 @@
-
+
diff --git a/AgileMapper.UnitTests.Orms.Ef5.LocalDb/App.config b/AgileMapper.UnitTests.Orms.Ef5.LocalDb/App.config
index c279b5844..814d8bd60 100644
--- a/AgileMapper.UnitTests.Orms.Ef5.LocalDb/App.config
+++ b/AgileMapper.UnitTests.Orms.Ef5.LocalDb/App.config
@@ -21,6 +21,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/AgileMapper.UnitTests.Orms.Ef5/AgileMapper.UnitTests.Orms.Ef5.csproj b/AgileMapper.UnitTests.Orms.Ef5/AgileMapper.UnitTests.Orms.Ef5.csproj
index ae63bd726..3b9f091b7 100644
--- a/AgileMapper.UnitTests.Orms.Ef5/AgileMapper.UnitTests.Orms.Ef5.csproj
+++ b/AgileMapper.UnitTests.Orms.Ef5/AgileMapper.UnitTests.Orms.Ef5.csproj
@@ -46,14 +46,14 @@
..\AgileMapper.snk
-
- ..\packages\Effort.2.0.1\lib\net45\Effort.dll
+
+ ..\packages\Effort.2.0.5\lib\net45\Effort.dll
..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll
- ..\packages\NMemory.3.0.0\lib\net45\NMemory.dll
+ ..\packages\NMemory.3.0.2\lib\net45\NMemory.dll
diff --git a/AgileMapper.UnitTests.Orms.Ef5/App.config b/AgileMapper.UnitTests.Orms.Ef5/App.config
index 72aa76b53..e5921ea3e 100644
--- a/AgileMapper.UnitTests.Orms.Ef5/App.config
+++ b/AgileMapper.UnitTests.Orms.Ef5/App.config
@@ -24,6 +24,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/AgileMapper.UnitTests.Orms.Ef5/packages.config b/AgileMapper.UnitTests.Orms.Ef5/packages.config
index 72190b619..73b2406a2 100644
--- a/AgileMapper.UnitTests.Orms.Ef5/packages.config
+++ b/AgileMapper.UnitTests.Orms.Ef5/packages.config
@@ -1,8 +1,8 @@
-
+
-
+
diff --git a/AgileMapper.UnitTests.Orms.Ef6.LocalDb/App.config b/AgileMapper.UnitTests.Orms.Ef6.LocalDb/App.config
index 560d9159f..031cf79f5 100644
--- a/AgileMapper.UnitTests.Orms.Ef6.LocalDb/App.config
+++ b/AgileMapper.UnitTests.Orms.Ef6.LocalDb/App.config
@@ -20,6 +20,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/AgileMapper.UnitTests.Orms.Ef6/AgileMapper.UnitTests.Orms.Ef6.csproj b/AgileMapper.UnitTests.Orms.Ef6/AgileMapper.UnitTests.Orms.Ef6.csproj
index 40d995106..4688b28e9 100644
--- a/AgileMapper.UnitTests.Orms.Ef6/AgileMapper.UnitTests.Orms.Ef6.csproj
+++ b/AgileMapper.UnitTests.Orms.Ef6/AgileMapper.UnitTests.Orms.Ef6.csproj
@@ -46,8 +46,8 @@
..\AgileMapper.snk
-
- ..\packages\Effort.EF6.2.0.1\lib\net45\Effort.dll
+
+ ..\packages\Effort.EF6.2.0.5\lib\net45\Effort.dll
..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll
@@ -56,7 +56,7 @@
..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll
- ..\packages\NMemory.3.0.0\lib\net45\NMemory.dll
+ ..\packages\NMemory.3.0.2\lib\net45\NMemory.dll
diff --git a/AgileMapper.UnitTests.Orms.Ef6/App.config b/AgileMapper.UnitTests.Orms.Ef6/App.config
index b8c386d9b..c4ec3fd85 100644
--- a/AgileMapper.UnitTests.Orms.Ef6/App.config
+++ b/AgileMapper.UnitTests.Orms.Ef6/App.config
@@ -9,6 +9,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/AgileMapper.UnitTests.Orms.Ef6/packages.config b/AgileMapper.UnitTests.Orms.Ef6/packages.config
index ea6621399..6073e0bac 100644
--- a/AgileMapper.UnitTests.Orms.Ef6/packages.config
+++ b/AgileMapper.UnitTests.Orms.Ef6/packages.config
@@ -1,8 +1,8 @@
-
+
-
+
diff --git a/AgileMapper.UnitTests.Orms.EfCore1/AgileMapper.UnitTests.Orms.EfCore1.csproj b/AgileMapper.UnitTests.Orms.EfCore1/AgileMapper.UnitTests.Orms.EfCore1.csproj
index c5e9dc404..7897c7715 100644
--- a/AgileMapper.UnitTests.Orms.EfCore1/AgileMapper.UnitTests.Orms.EfCore1.csproj
+++ b/AgileMapper.UnitTests.Orms.EfCore1/AgileMapper.UnitTests.Orms.EfCore1.csproj
@@ -89,19 +89,21 @@
..\packages\System.AppContext.4.3.0\lib\net46\System.AppContext.dll
True
-
- ..\packages\System.Collections.Immutable.1.4.0\lib\netstandard2.0\System.Collections.Immutable.dll
+
+ ..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll
..\packages\System.ComponentModel.Annotations.4.4.0\lib\net461\System.ComponentModel.Annotations.dll
-
- ..\packages\System.Console.4.3.0\lib\net46\System.Console.dll
+
+ ..\packages\System.Console.4.3.1\lib\net46\System.Console.dll
+ True
+ True
-
- ..\packages\System.Diagnostics.DiagnosticSource.4.4.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
+
+ ..\packages\System.Diagnostics.DiagnosticSource.4.5.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll
@@ -109,8 +111,8 @@
..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll
-
- ..\packages\System.Interactive.Async.3.1.1\lib\net46\System.Interactive.Async.dll
+
+ ..\packages\System.Interactive.Async.3.2.0\lib\net46\System.Interactive.Async.dll
..\packages\System.IO.4.3.0\lib\net462\System.IO.dll
@@ -129,8 +131,9 @@
..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll
-
- ..\packages\System.Net.Http.4.3.3\lib\net46\System.Net.Http.dll
+
+ ..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll
+ True
True
@@ -140,14 +143,18 @@
..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll
-
- ..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll
+
+ ..\packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll
+ True
+ True
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.4.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
-
- ..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll
+
+ ..\packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll
+ True
+ True
..\packages\System.Runtime.InteropServices.4.3.0\lib\net462\System.Runtime.InteropServices.dll
@@ -173,7 +180,9 @@
- ..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll
+ ..\packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll
+ True
+ True
..\packages\xunit.abstractions.2.0.3\lib\net35\xunit.abstractions.dll
diff --git a/AgileMapper.UnitTests.Orms.EfCore1/app.config b/AgileMapper.UnitTests.Orms.EfCore1/app.config
index ad5ef9c84..b3f7d15cd 100644
--- a/AgileMapper.UnitTests.Orms.EfCore1/app.config
+++ b/AgileMapper.UnitTests.Orms.EfCore1/app.config
@@ -32,11 +32,11 @@
-
+
-
+
@@ -54,6 +54,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AgileMapper.UnitTests.Orms.EfCore1/packages.config b/AgileMapper.UnitTests.Orms.EfCore1/packages.config
index 71e817721..eaf96def4 100644
--- a/AgileMapper.UnitTests.Orms.EfCore1/packages.config
+++ b/AgileMapper.UnitTests.Orms.EfCore1/packages.config
@@ -17,16 +17,16 @@
-
+
-
+
-
+
-
+
@@ -35,7 +35,7 @@
-
+
@@ -43,9 +43,9 @@
-
-
-
+
+
+
@@ -60,7 +60,7 @@
-
+
diff --git a/AgileMapper.UnitTests.Orms.EfCore2/AgileMapper.UnitTests.Orms.EfCore2.csproj b/AgileMapper.UnitTests.Orms.EfCore2/AgileMapper.UnitTests.Orms.EfCore2.csproj
index e6ebc1529..6852fcf27 100644
--- a/AgileMapper.UnitTests.Orms.EfCore2/AgileMapper.UnitTests.Orms.EfCore2.csproj
+++ b/AgileMapper.UnitTests.Orms.EfCore2/AgileMapper.UnitTests.Orms.EfCore2.csproj
@@ -88,33 +88,35 @@
..\packages\Remotion.Linq.2.2.0\lib\net45\Remotion.Linq.dll
-
- ..\packages\System.Collections.Immutable.1.4.0\lib\netstandard2.0\System.Collections.Immutable.dll
+
+ ..\packages\System.Collections.Immutable.1.5.0\lib\netstandard2.0\System.Collections.Immutable.dll
-
- ..\packages\System.ComponentModel.Annotations.4.4.0\lib\net461\System.ComponentModel.Annotations.dll
+
+ ..\packages\System.ComponentModel.Annotations.4.5.0\lib\net461\System.ComponentModel.Annotations.dll
-
- ..\packages\System.Diagnostics.DiagnosticSource.4.4.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
+
+ ..\packages\System.Diagnostics.DiagnosticSource.4.5.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
-
- ..\packages\System.Interactive.Async.3.1.1\lib\net46\System.Interactive.Async.dll
+
+ ..\packages\System.Interactive.Async.3.2.0\lib\net46\System.Interactive.Async.dll
..\packages\System.Reflection.4.3.0\lib\net462\System.Reflection.dll
True
-
- ..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll
+
+ ..\packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll
+ True
True
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.4.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
-
- ..\packages\System.Runtime.Extensions.4.3.0\lib\net462\System.Runtime.Extensions.dll
+
+ ..\packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll
+ True
True
@@ -179,6 +181,7 @@
+
diff --git a/AgileMapper.UnitTests.Orms.EfCore2/WhenMappingOverEnumerables.cs b/AgileMapper.UnitTests.Orms.EfCore2/WhenMappingOverEnumerables.cs
new file mode 100644
index 000000000..5c3967c68
--- /dev/null
+++ b/AgileMapper.UnitTests.Orms.EfCore2/WhenMappingOverEnumerables.cs
@@ -0,0 +1,84 @@
+namespace AgileObjects.AgileMapper.UnitTests.Orms.EfCore2
+{
+ using System.Linq;
+ using System.Threading.Tasks;
+ using Common;
+ using Infrastructure;
+ using Microsoft.EntityFrameworkCore;
+ using Orms.Infrastructure;
+ using TestClasses;
+ using Xunit;
+
+ public class WhenMappingOverEnumerables : OrmTestClassBase
+ {
+ public WhenMappingOverEnumerables(InMemoryEfCore2TestContext context)
+ : base(context)
+ {
+ }
+
+ [Fact]
+ public Task ShouldUpdateADbSetLocalCollection()
+ {
+ return RunTest(async (writeContext, mapper) =>
+ {
+ await writeContext.Persons.AddRangeAsync(
+ new Person { Name = "One", Address = new Address { Line1 = "One Line 1", Line2 = "One Line 2" } },
+ new Person { Name = "Two" },
+ new Person { Name = "Three", Address = new Address { Line1 = "Three Line 1" } },
+ new Person { Name = "Four" });
+
+ await writeContext.SaveChangesAsync();
+
+ using (var readContext = new EfCore2TestDbContext())
+ {
+ await readContext.Persons.LoadAsync();
+
+ var localPersons = readContext.Persons.Local;
+
+ var orderedPersons = localPersons.OrderBy(p => p.PersonId).ToArray();
+
+ orderedPersons.Length.ShouldBe(4);
+ orderedPersons.First().Name.ShouldBe("One");
+ orderedPersons.Second().Name.ShouldBe("Two");
+ orderedPersons.Third().Name.ShouldBe("Three");
+ orderedPersons.Fourth().Name.ShouldBe("Four");
+
+ mapper.WhenMapping.InstancesOf().IdentifyUsing(p => p.Name);
+
+ var updatedPersons = new[]
+ {
+ new Person { Name = "One" },
+ new Person { Name = "Two", Address = new Address { Line1 = "Two Line 1" } },
+ new Person { Name = "Three", Address = new Address { Line1 = "Three Line 1", Line2 = "Three Line 2" } },
+ new Person { Name = "Five", Address = new Address { Line1 = "Five Line 1" } }
+ };
+
+ mapper.Map(updatedPersons).Over(localPersons);
+
+ await readContext.SaveChangesAsync();
+
+ orderedPersons = localPersons.OrderBy(p => p.PersonId).ToArray();
+
+ orderedPersons.Length.ShouldBe(4);
+ orderedPersons.First().Name.ShouldBe("One");
+ orderedPersons.First().Address.ShouldBeNull();
+
+ orderedPersons.Second().Name.ShouldBe("Two");
+ orderedPersons.Second().Address.ShouldNotBeNull();
+ orderedPersons.Second().Address.Line1.ShouldBe("Two Line 1");
+ orderedPersons.Second().Address.Line2.ShouldBeNull();
+
+ orderedPersons.Third().Name.ShouldBe("Three");
+ orderedPersons.Third().Address.ShouldNotBeNull();
+ orderedPersons.Third().Address.Line1.ShouldBe("Three Line 1");
+ orderedPersons.Third().Address.Line2.ShouldBe("Three Line 2");
+
+ orderedPersons.Fourth().Name.ShouldBe("Five");
+ orderedPersons.Fourth().Address.ShouldNotBeNull();
+ orderedPersons.Fourth().Address.Line1.ShouldBe("Five Line 1");
+ orderedPersons.Fourth().Address.Line2.ShouldBeNull();
+ }
+ });
+ }
+ }
+}
diff --git a/AgileMapper.UnitTests.Orms.EfCore2/app.config b/AgileMapper.UnitTests.Orms.EfCore2/app.config
index eafddf1b6..8804e24d2 100644
--- a/AgileMapper.UnitTests.Orms.EfCore2/app.config
+++ b/AgileMapper.UnitTests.Orms.EfCore2/app.config
@@ -26,6 +26,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AgileMapper.UnitTests.Orms.EfCore2/packages.config b/AgileMapper.UnitTests.Orms.EfCore2/packages.config
index 6a7fabd3b..5c9c707fd 100644
--- a/AgileMapper.UnitTests.Orms.EfCore2/packages.config
+++ b/AgileMapper.UnitTests.Orms.EfCore2/packages.config
@@ -13,20 +13,20 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
diff --git a/AgileMapper.UnitTests.Orms/app.config b/AgileMapper.UnitTests.Orms/app.config
index b1d125491..dc349b495 100644
--- a/AgileMapper.UnitTests.Orms/app.config
+++ b/AgileMapper.UnitTests.Orms/app.config
@@ -6,6 +6,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/AgileMapper.UnitTests/AgileMapper.UnitTests.csproj b/AgileMapper.UnitTests/AgileMapper.UnitTests.csproj
index 9a22ca05a..8d6904379 100644
--- a/AgileMapper.UnitTests/AgileMapper.UnitTests.csproj
+++ b/AgileMapper.UnitTests/AgileMapper.UnitTests.csproj
@@ -44,8 +44,8 @@
..\packages\AgileObjects.NetStandardPolyfills.1.4.0\lib\net40\AgileObjects.NetStandardPolyfills.dll
-
- ..\packages\AgileObjects.ReadableExpressions.2.1.0\lib\net40\AgileObjects.ReadableExpressions.dll
+
+ ..\packages\AgileObjects.ReadableExpressions.2.1.1\lib\net40\AgileObjects.ReadableExpressions.dll
..\packages\Microsoft.Extensions.Primitives.2.0.0\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll
@@ -55,8 +55,8 @@
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.4.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
diff --git a/AgileMapper.UnitTests/Configuration/Inline/WhenConfiguringTypeIdentifiersInline.cs b/AgileMapper.UnitTests/Configuration/Inline/WhenConfiguringTypeIdentifiersInline.cs
index 8c7daf1bd..b060c15e0 100644
--- a/AgileMapper.UnitTests/Configuration/Inline/WhenConfiguringTypeIdentifiersInline.cs
+++ b/AgileMapper.UnitTests/Configuration/Inline/WhenConfiguringTypeIdentifiersInline.cs
@@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+ using AgileMapper.Configuration;
using Common;
using TestClasses;
#if !NET35
@@ -81,5 +82,141 @@ public void ShouldExtendConfiguredIdentifiersInline()
mapper.InlineContexts().ShouldHaveSingleItem();
}
}
+
+ [Fact]
+ public void ShouldUseACompositeIdentifierInline()
+ {
+ using (var mapper = Mapper.CreateNew())
+ {
+ var source = new[]
+ {
+ new WeddingDto
+ {
+ BrideName = "Nat",
+ GroomName = "Andy",
+ BrideAddressLine1 = "Nat + Andy's House",
+ GroomAddressLine1 = "Nat + Andy's House"
+ },
+ new WeddingDto
+ {
+ BrideName = "Timea",
+ GroomName = "David",
+ BrideAddressLine1 = "Timea + David's House",
+ GroomAddressLine1 = "Timea + David's House"
+ }
+ };
+
+ var target = new List
+ {
+ new WeddingDto
+ {
+ BrideName = "Nat",
+ GroomName = "Andy"
+ },
+ new WeddingDto
+ {
+ BrideName = "Kate",
+ GroomName = "Steve"
+ }
+ };
+
+ mapper.Map(source).OnTo(target, cfg => cfg
+ .WhenMapping
+ .InstancesOf()
+ .IdentifyUsing(a => a.BrideName, a => a.GroomName));
+
+ target.Count.ShouldBe(3);
+
+ target.First().BrideName.ShouldBe("Nat");
+ target.First().GroomName.ShouldBe("Andy");
+ target.First().BrideAddressLine1.ShouldBe("Nat + Andy's House");
+ target.First().GroomAddressLine1.ShouldBe("Nat + Andy's House");
+
+ target.Second().BrideName.ShouldBe("Kate");
+ target.Second().GroomName.ShouldBe("Steve");
+ target.Second().BrideAddressLine1.ShouldBeNull();
+ target.Second().GroomAddressLine1.ShouldBeNull();
+
+ target.Third().BrideName.ShouldBe("Timea");
+ target.Third().GroomName.ShouldBe("David");
+ target.Third().BrideAddressLine1.ShouldBe("Timea + David's House");
+ target.Third().GroomAddressLine1.ShouldBe("Timea + David's House");
+ }
+ }
+
+ [Fact]
+ public void ShouldUseConfiguredIdentifierInCompositeIdentifierInline()
+ {
+ using (var mapper = Mapper.CreateNew())
+ {
+ mapper.WhenMapping
+ .InstancesOf>()
+ .IdentifyUsing(ptf => ptf.Value1);
+
+ var source = new[]
+ {
+ new PublicTwoFields