Пример #1
0
        public override IResult <long> Execute(IContext dataContext)
        {
            var query = dataContext.AsQueryable <T>();

            if (IncludeQuery != null)
            {
                query = IncludeQuery.Include(query);
            }

            var entity = !Request.IsNew ?
                         Queryable.FirstOrDefault(query, x => x.Id == Request.Id)
                : new T();

            if (entity == null)
            {
                return(new Result <long>(
                           // errorCode: ValidationCodes.Common.Cmn021,
                           entityName: typeof(T).Name.SplitCamelCase()));
            }

            MapAction?.Invoke(entity, WrappedRequest);

            entity.UpdateAuditableProperties(Request.IsNew
                ? AuditableEntity.AuditableAction.Insert
                : AuditableEntity.AuditableAction.Update, UserId);

            //if (entity.AlternateId==0)
            if (Request.IsNew)
            {
                dataContext.InsertWithChildEntities(entity);
            }
            else
            {
                dataContext.Update(entity);
            }

            return(new Result <long>
            {
                Value = entity.Id
            });
        }