Пример #1
0
        public override void ProcessMethodCall(IOqlSyntaxContext callContext, MethodCallExpression methodCall)
        {
            Expression x = methodCall.GetArgument(1);

            if (x.NodeType == ExpressionType.MemberInit)
            {
                m_change_set = new MemberInitChangeSet(x as MemberInitExpression);
                return;
            }

            object obj = x.GetValue();

            if (obj is IDataChangeSet)
            {
                m_change_set = obj as IDataChangeSet;
                return;
            }


            m_change_set = new ObjectChangeSet(obj).ChangeAllProperties();
        }
Пример #2
0
        public async Task <IDataResult <T> > ProcessUpdate(IDataChangeSet <T> changeSet)
        {
            IDataValidationStrategy <T> validator = CreateValidator();

            using (TransactionScope(changeSet.Instance))
            {
                if (await IsAccessForUpdate(changeSet.Instance))
                {
                    IDataResult <T> result = validator.Validate(changeSet);

                    if (result.Ok)
                    {
                        await ApplyUpdate(changeSet);
                        await UpdateComplete(changeSet);
                    }

                    return(result);
                }

                return(validator.Context.CriticalError(changeSet.Instance, "PermissionDenied"));
            }
        }
Пример #3
0
 protected abstract Task UpdateComplete(IDataChangeSet <T> changeSet);
Пример #4
0
 protected abstract Task ApplyUpdate(IDataChangeSet <T> changeSet);