示例#1
0
        /// <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();
            }
        }
示例#2
0
 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);