/// <summary> /// Initializes a new instance of the <see cref="UpdateEntryDto"/> class. /// </summary> /// <param name="entry">The state entry of an entity.</param> /// <param name="mapper">The <see cref="IDynamicObjectMapper" /> used for mapping the property values.</param> public UpdateEntryDto(IUpdateEntry entry, IDynamicObjectMapper mapper) { DynamicObject CreateValueDto(IProperty propertyBase, object value) { value = Utils.ConvertToProvider(value, propertyBase); return(mapper.MapObject(value)); } this.EntityTypeName = entry.EntityType.DisplayName(); this.EntityState = entry.EntityState; this.PropertyDatas = entry.ToEntityEntry().Properties.Select( prop => new PropertyData { Name = prop.Metadata.Name, OriginalValueDto = prop.Metadata.GetOriginalValueIndex() >= 0 ? CreateValueDto(prop.Metadata, prop.OriginalValue) : null, CurrentValueDto = CreateValueDto(prop.Metadata, prop.CurrentValue), IsModified = prop.IsModified, IsTemporary = prop.IsTemporary, }).ToList(); if (entry.EntityType.HasDefiningNavigation()) { var ownership = entry.EntityType.GetForeignKeys().Single(fk => fk.IsOwnership); this.DelegatedIdentityDatas = ownership.Properties.Select( prop => new PropertyData { Name = prop.Name, OriginalValueDto = CreateValueDto(prop, entry.GetOriginalValue(prop)), CurrentValueDto = CreateValueDto(prop, entry.GetCurrentValue(prop)), IsModified = entry.IsModified(prop), IsTemporary = entry.HasTemporaryValue(prop), }).ToList(); } }
protected override async IAsyncEnumerable <DynamicObject?> ConvertResult(IAsyncEnumerable <object?> queryResult) { await foreach (var item in queryResult.CheckNotNull(nameof(queryResult))) { yield return(_mapper.MapObject(item, _setTypeInformation)); } }
protected override async IAsyncEnumerable <DynamicObject> ConvertResult(IAsyncEnumerable <object?> queryResult) { await foreach (var item in queryResult.CheckNotNull(nameof(queryResult))) { yield return(_mapper.MapObject(item, _setTypeInformation) ?? DynamicObject.CreateDefault(Context.SystemExpression?.Type)); } }
/// <summary> /// Converts the query result into a collection of <see cref="DynamicObject"/>. /// </summary> /// <param name="queryResult">The reult of the query execution.</param> /// <returns>The mapped query result.</returns> protected override DynamicObject?ConvertResult(object?queryResult) => _mapper.MapObject(queryResult, _setTypeInformation);
private DynamicObject Map(object?value, Type?type) => value is null ? DynamicObject.CreateDefault(type) : _mapper.MapObject(value, _setTypeInformation);