Exemplo n.º 1
0
 private void SetupUpdateDeleteStatement(ModificationStatement statement, object obj, DataStoreMapping mapping, string alias)
 {
     statement.Condition = new BinaryOperator(
         new QueryOperand(GetKeyColumn(mapping), alias),
         new OperandValue(mapping.GetKey(obj)),
         BinaryOperatorType.Equal);
 }
Exemplo n.º 2
0
 void ModifyData(ModificationStatement stm, List<ParameterValue> modificationResultIdentities) {
     string key = _dataStoreManager.GetKey(stm.TableName);
     ModificationResult modificationResult = _dataStoreManager.SimpleDataLayers[key].ModifyData(stm);
     if (modificationResult != null) {
         modificationResultIdentities.AddRange(modificationResult.Identities);
     }
 }
Exemplo n.º 3
0
 void ModifyXPObjectTypeData(ModificationStatement modificationStatement, List<ParameterValue> modificationResultIdentities) {
     var insertStatement = (InsertStatement)modificationStatement;
     foreach (var parameterValues in _dataStoreManager.SimpleDataLayers.Select(pair
         => pair.Value).Select(dataLayer => ModifyXPObjectTypeDataCore(dataLayer, insertStatement)).Where(values => values != null)) {
         modificationResultIdentities.AddRange(parameterValues);
     }
 }
Exemplo n.º 4
0
 void ModifyXPObjectTypeData(ModificationStatement stm, List<ParameterValue> modificationResultIdentities) {
     var stm1 = stm;
     foreach (var parameterValues in _dataStoreManager.SimpleDataLayers.Select(pair
         => pair.Value).Select(dataLayer => dataLayer.ModifyData(stm1).Identities))
     {
         modificationResultIdentities.AddRange(parameterValues);
     }
 }
Exemplo n.º 5
0
 ModificationResult ModifyXPObjectTable(ModificationStatement[] dmlStatements, InsertStatement insertStatement, ModificationResult modificationResult) {
     foreach (var simpleDataLayer in _dataStoreManager.SimpleDataLayers) {
         var dataLayer = simpleDataLayer.Value;
         if (!TypeExists(dataLayer, insertStatement)) {
             if (!IsMainLayer(dataLayer.Connection)) {
                 _xpoObjectHacker.CreateObjectTypeIndetifier(insertStatement, _dataStoreManager.SimpleDataLayers[DataStoreManager.StrDefault]);
             }
             var modifyData = dataLayer.ModifyData(dmlStatements);
             if (modifyData.Identities.Count() > 0)
                 modificationResult = modifyData;
         }
     }
     return modificationResult;
 }
Exemplo n.º 6
0
        private void SetupInsertUpdateStatement(ModificationStatement statement, object obj, DataStoreMapping mapping)
        {
            var values = new object[mapping.Table.Columns.Count];

            mapping.Save(obj, values);
            for (int i = 0; i < values.Length; i++)
            {
                var column = mapping.Table.Columns[i];
                if (!column.IsIdentity)
                {
                    statement.Operands.Add(new QueryOperand(column, null));
                    statement.Parameters.Add(new OperandValue(values[i]));
                }
            }
        }
Exemplo n.º 7
0
 ModificationResult ModifyXPObjectTable(ModificationStatement[] dmlStatements, InsertStatement insertStatement, ModificationResult modificationResult) {
     foreach (var simpleDataLayer in _dataStoreManager.GetDataLayers(DataStore)) {
         if (!simpleDataLayer.Value.IsLegacy) {
             var dataLayer = simpleDataLayer.Value;
             if (!TypeExists(dataLayer, insertStatement)) {
                 if (!dataLayer.IsMainLayer) {
                     _xpoObjectHacker.CreateObjectTypeIndetifier(insertStatement, _dataStoreManager.GetDataLayer(DataStoreManager.StrDefault,DataStore));
                 }
                 var modifyData = dataLayer.ModifyData(dmlStatements);
                 if (modifyData.Identities.Any())
                     modificationResult = modifyData;
             }
         }
     }
     return modificationResult;
 }
Exemplo n.º 8
0
 public void ModifyData(ModificationStatement[] statements) {
     if (_tablesDictionary.Count > 0) {
         InsertData(statements.OfType<InsertStatement>().ToList());
         UpdateData(statements.OfType<UpdateStatement>());
     }
 }
        /// <summary>
        /// Модификация записей по указанному выражению
        /// </summary>
        /// <param name="root">Выражение на модификацию записей</param>
        /// <param name="identities">Держатель одинаковых идентификаторов</param>
        /// <returns>Результат модификации</returns>
        /// <todo>Пакетное добавление данных (batch insert)</todo>
        protected virtual ParameterValue ModifyRecords(ModificationStatement root, TaggedParametersHolder identities)
        {
            // Кастомизированная модификация
            DBTableEx table = XPDictionaryInformer.TranslateAndGet(root.TableName);
            if (table.IsCustom)
            {
                ParameterValue result = null;
                if (root is InsertStatement) result = table.CustomPersistent.Insert(this, (InsertStatement)root);
                if (root is UpdateStatement) table.CustomPersistent.Update(this, (UpdateStatement)root);
                if (root is DeleteStatement) table.CustomPersistent.Delete(this, (DeleteStatement)root);
                return result;
            }

            // Обычная модификация
            Dictionary<OperandValue, string> parameters = new Dictionary<OperandValue, string>();
            Query query = new OracleSecuredModifySqlGenerator(this, identities, parameters).GenerateSql(table, root);
            ParameterValue id = root is InsertStatement ? ((InsertStatement)root).IdentityParameter : null;
            ExecuteBlock(query, id);
            return id;
        }
Exemplo n.º 10
0
 public DataStoreModifyDataEventArgs(ModificationStatement[] dmlStatements) {
     ModificationStatements = dmlStatements;
 }
Exemplo n.º 11
0
 public void ModifyData(ModificationStatement[] statements) {
     InsertData(statements.OfType<InsertStatement>());
     UpdateData(statements.OfType<UpdateStatement>());
 }