Skip to content

Commit abf06eb

Browse files
authored
Entity updates (#44)
* Automatically ignoring target members with a KeyAttribute * Ensuring empty nested entities are not created when mapping to a parent entity / Support for non-mapping recursion functions * Automatically short-circuiting recursive mappings if the target type ends with 'Dto' or 'DataTransferObject'
1 parent 653981c commit abf06eb

20 files changed

+309
-61
lines changed

AgileMapper.UnitTests/AgileMapper.UnitTests.csproj

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
<HintPath>..\packages\AgileObjects.ReadableExpressions.1.10.1\lib\net40\AgileObjects.ReadableExpressions.dll</HintPath>
4646
</Reference>
4747
<Reference Include="System" />
48+
<Reference Include="System.ComponentModel.DataAnnotations" />
4849
<Reference Include="System.Core" />
4950
<Reference Include="System.Drawing" />
5051
<Reference Include="System.Numerics" />
@@ -154,9 +155,16 @@
154155
<Compile Include="Structs\WhenMappingToUnmappableStructMembers.cs" />
155156
<Compile Include="Structs\WhenMappingToNewStructMembers.cs" />
156157
<Compile Include="Structs\WhenMappingToNewStructs.cs" />
158+
<Compile Include="TestClasses\DtoBase.cs" />
157159
<Compile Include="TestClasses\Earthworm.cs" />
160+
<Compile Include="TestClasses\EntityBase.cs" />
158161
<Compile Include="TestClasses\IPublicInterface.cs" />
159162
<Compile Include="TestClasses\MegaProduct.cs" />
163+
<Compile Include="TestClasses\OrderDto.cs" />
164+
<Compile Include="TestClasses\OrderEntity.cs" />
165+
<Compile Include="TestClasses\OrderItemDto.cs" />
166+
<Compile Include="TestClasses\OrderItemEntity.cs" />
167+
<Compile Include="TestClasses\ProductEntity.cs" />
160168
<Compile Include="TestClasses\ProductDto.cs" />
161169
<Compile Include="TestClasses\ProductDtoMega.cs" />
162170
<Compile Include="Configuration\WhenConfiguringConstructorDataSources.cs" />
@@ -197,9 +205,12 @@
197205
<Compile Include="TestClasses\PublicTwoFields.cs" />
198206
<Compile Include="TestClasses\PublicTwoFieldsStruct.cs" />
199207
<Compile Include="TestClasses\PublicTwoParamCtor.cs" />
208+
<Compile Include="TestClasses\SaveOrderItemRequest.cs" />
209+
<Compile Include="TestClasses\SaveOrderRequest.cs" />
200210
<Compile Include="TestClasses\StringKeyedDictionary.cs" />
201211
<Compile Include="TestClasses\Wedding.cs" />
202212
<Compile Include="TestClasses\WeddingDto.cs" />
213+
<Compile Include="WhenMappingEntities.cs" />
203214
<Compile Include="WhenValidatingMappings.cs" />
204215
<Compile Include="WhenAnalysingCollections.cs" />
205216
<Compile Include="MapperCloning\WhenCloningDataSources.cs" />
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
internal abstract class DtoBase
4+
{
5+
public int Id { get; set; }
6+
}
7+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
using System.ComponentModel.DataAnnotations;
4+
5+
internal abstract class EntityBase
6+
{
7+
[Key]
8+
public int Id { get; set; }
9+
}
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
using System;
4+
using System.Collections.Generic;
5+
6+
internal class OrderDto : DtoBase
7+
{
8+
public DateTime DateCreated { get; set; }
9+
10+
public ICollection<OrderItemDto> Items { get; set; }
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
using System;
4+
using System.Collections.Generic;
5+
6+
internal class OrderEntity : EntityBase
7+
{
8+
public DateTime DateCreated { get; set; }
9+
10+
public ICollection<OrderItemEntity> Items { get; set; }
11+
}
12+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
internal class OrderItemDto : DtoBase
4+
{
5+
public int OrderId { get; set; }
6+
7+
public OrderDto Order { get; set; }
8+
9+
public ProductDto Product { get; set; }
10+
}
11+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
internal class OrderItemEntity : EntityBase
4+
{
5+
public int OrderId { get; set; }
6+
7+
public OrderEntity Order { get; set; }
8+
9+
public int ProductId { get; set; }
10+
11+
public ProductEntity Product { get; set; }
12+
}
13+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
using System;
4+
5+
internal class ProductEntity : EntityBase
6+
{
7+
public Guid ProductSku
8+
{
9+
get;
10+
set;
11+
}
12+
13+
public double Price
14+
{
15+
get;
16+
set;
17+
}
18+
}
19+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
internal class SaveOrderItemRequest : DtoBase
4+
{
5+
public int OrderId { get; set; }
6+
7+
public int ProductId { get; set; }
8+
}
9+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace AgileObjects.AgileMapper.UnitTests.TestClasses
2+
{
3+
using System;
4+
using System.Collections.Generic;
5+
6+
internal class SaveOrderRequest : DtoBase
7+
{
8+
public DateTime DateCreated { get; set; }
9+
10+
public ICollection<SaveOrderItemRequest> Items { get; set; }
11+
}
12+
}

0 commit comments

Comments
 (0)