Esempio n. 1
0
        public async Task <long> DeleteAsync <TTableModel>(TTableModel model) where TTableModel : class, new()
        {
            var filterDefs = new List <FilterDefinition <TTableModel> >();
            var fileds     = ReflectHelper.ConvertToDictionary(model);

            foreach (var item in fileds)
            {
                var _t = Builders <TTableModel> .Filter.Eq(item.Key, item.Value);

                filterDefs.Add(_t);
            }
            var filter = Builders <TTableModel> .Filter.And(filterDefs);

            var dr = await GetCollection <TTableModel>().DeleteManyAsync(filter);

            return(dr.DeletedCount);
        }
Esempio n. 2
0
        public async Task <long> UpdateModelAsync <Tid, TTableModel>(Tid id, TTableModel model, string notFieldRegex = "^_id") where TTableModel : class, new()
        {
            var filter = Builders <TTableModel> .Filter.Eq("_id", GetPrimaryKeyValue(id));

            var fileds     = ReflectHelper.ConvertToDictionary(model, notFieldRegex);//只有主键不更新
            var updateDefs = new List <UpdateDefinition <TTableModel> >();

            foreach (var item in fileds)
            {
                var _t = Builders <TTableModel> .Update.Set(item.Key, item.Value);

                updateDefs.Add(_t);
            }
            var update = Builders <TTableModel> .Update.Combine(updateDefs);

            var ur = await GetCollection <TTableModel>().UpdateManyAsync(filter, update);

            //内容没有更改的时候也要返回成功
            return(ur.ModifiedCount > 0 ? ur.ModifiedCount : 1);
        }