A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/MapsterMapper/Mapster/wiki/Object-references below:

Object references · MapsterMapper/Mapster Wiki · GitHub

Preserve reference (preventing circular reference stackoverflow)

When mapping objects with circular references, a stackoverflow exception will result. This is because Mapster will get stuck in a loop trying to recursively map the circular reference. If you would like to map circular references or preserve references (such as 2 properties pointing to the same object), you can do it by setting PreserveReference to true

TypeAdapterConfig<TSource, TDestination>
    .NewConfig()
    .PreserveReference(true);

NOTE: in Mapster setting is per type pair, not per hierarchy (see https://github.com/MapsterMapper/Mapster/wiki/Config-for-nested-classes). Therefore, you need to apply config to all type pairs.

NOTE: you might need to use MaxDepth. PreserveReference doesn't support EF Query (ProjectTo)

Rather than PreserveReference, you could also try MaxDepth. MaxDepth will map until it reaches the defined limit. Unlike PreserveReference, MaxDepth also works with queryable projection.

TypeAdapterConfig<TSource, TDestination>
    .NewConfig()
    .MaxDepth(3);

NOTE 1: MaxDepth starts with 1, means you will copy only primitives. POCO class and collection of POCO each count as a depth of 1.

NOTE 2: even MaxDepth has no maximum value, you shouldn't input large number. Each depth will generate a mapping logic, otherwise it will consume a lot of memory.

By default, Mapster will recursively map nested objects. You can do shallow copying by setting ShallowCopyForSameType to true.

TypeAdapterConfig<TSource, TDestination>
    .NewConfig()
    .ShallowCopyForSameType(true);
Mapping very large objects

For performance optimization, Mapster tried to inline class mapping. This process will takes time if your models are complex.

You can skip inlining process by:

TypeAdapterConfig.GlobalSettings.Default
    .AvoidInlineMapping(true);

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4