Пример #1
0
        public async Task <object> Remove <T>(
            string keyField,
            object value,
            string tableName = null,
            Query query      = null)
        {
            DataManager dataManager = this;

            if (dataManager.Adaptor == Adaptors.CustomAdaptor)
            {
                return(await dataManager.BaseAdaptor.Remove(value, keyField, (string)null));
            }
            if (!dataManager.DataAdaptor.IsRemote())
            {
                return(!(dataManager.Json is Array) ? dataManager.DataAdaptor.Remove(dataManager, keyField, value) : BlazorAdaptor.RemoveArray <T>(dataManager, keyField, value));
            }
            object             obj     = dataManager.DataAdaptor.Remove(dataManager, keyField, value, tableName, query);
            HttpRequestMessage request = dataManager.HttpHandler.PrepareRequest(obj as RequestOptions);

            dataManager.BeforeSend(request);
            object Data = await dataManager.DataAdaptor.PerformDataOperation <T>((object)request);

            return(await dataManager.DataAdaptor.ProcessCrudResponse <T>(Data, query?.Queries));
        }
Пример #2
0
        public async Task <object> SaveChanges <T>(
            object changed,
            object added,
            object deleted,
            string keyField,
            int?dropIndex,
            string tableName = null,
            Query query      = null,
            object Original  = null)
        {
            DataManager dataManager = this;
            Utils       e           = new Utils()
            {
                Url = tableName,
                Key = keyField
            };

            if (dataManager.Adaptor == Adaptors.CustomAdaptor)
            {
                return(await dataManager.BaseAdaptor.BatchUpdate(changed, added, deleted, keyField, (string)null, dropIndex));
            }
            if (dataManager.DataAdaptor.IsRemote())
            {
                object obj     = dataManager.DataAdaptor.BatchUpdate(dataManager, changed, added, deleted, e, keyField, dropIndex, query, Original);
                object queries = dataManager.DataAdaptor.GetName() == "ODataAdaptor" || dataManager.DataAdaptor.GetName() == "ODataV4Adaptor" ? (object)dataManager.HttpHandler.PrepareBatchRequest(obj as RequestOptions) : (object)dataManager.HttpHandler.PrepareRequest(obj as RequestOptions);
                dataManager.BeforeSend(queries as HttpRequestMessage);
                object Data = await dataManager.DataAdaptor.PerformDataOperation <T>(queries);

                return(dataManager.DataAdaptor.GetName() == "ODataAdaptor" || dataManager.DataAdaptor.GetName() == "ODataV4Adaptor" ? await dataManager.DataAdaptor.ProcessBatchResponse <T>(Data, query?.Queries) : await dataManager.DataAdaptor.ProcessCrudResponse <CRUDModel <T> >(Data, query?.Queries));
            }
            return(!typeof(IDynamicMetaObjectProvider).IsAssignableFrom((((changed as IList).Count <= 0 ? ((added as IList).Count <= 0 ? deleted : added) : changed) as IEnumerable).Cast <object>().ToList <object>().FirstOrDefault <object>()?.GetType()) ? (!(dataManager.Json is Array) ? dataManager.DataAdaptor.BatchUpdate(dataManager, changed, added, deleted, e, keyField, dropIndex, query) : BlazorAdaptor.BatchUpdateArray <T>(dataManager, changed, added, deleted, e, keyField, dropIndex, query)) : dataManager.DataAdaptor.BatchUpdate(dataManager, (changed as IEnumerable).Cast <IDynamicMetaObjectProvider>().ToList <IDynamicMetaObjectProvider>(), (added as IEnumerable).Cast <IDynamicMetaObjectProvider>().ToList <IDynamicMetaObjectProvider>(), (deleted as IEnumerable).Cast <IDynamicMetaObjectProvider>().ToList <IDynamicMetaObjectProvider>(), e, keyField, dropIndex, query, (object)null));
        }
Пример #3
0
        public async Task <object> Insert <T>(
            object data,
            string tableName = null,
            Query query      = null,
            int position     = 0)
        {
            DataManager dataManager = this;

            if (dataManager.Adaptor == Adaptors.CustomAdaptor)
            {
                return(await dataManager.BaseAdaptor.Insert(data));
            }
            if (!dataManager.DataAdaptor.IsRemote())
            {
                return(!typeof(IDynamicMetaObjectProvider).IsAssignableFrom(data.GetType()) ? (!(dataManager.Json is Array) ? dataManager.DataAdaptor.Insert(dataManager, data, tableName, query, position) : BlazorAdaptor.InsertArray <T>(dataManager, data, position)) : dataManager.DataAdaptor.Insert(dataManager, data as IDynamicMetaObjectProvider, tableName, query, position));
            }
            object             obj     = dataManager.DataAdaptor.Insert(dataManager, data, tableName, query, position);
            HttpRequestMessage request = dataManager.HttpHandler.PrepareRequest(obj as RequestOptions);

            dataManager.BeforeSend(request);
            object Data = await dataManager.DataAdaptor.PerformDataOperation <T>((object)request);

            return(await dataManager.DataAdaptor.ProcessCrudResponse <T>(Data, query?.Queries));
        }