Ejemplo n.º 1
0
        public void AddOrEdit(T model, DateTime?modelTime = null)
        {
            DateTime time      = modelTime ?? DateTime.Now;
            var      filterDef = GetFilterDefinitionOfKey(model);
            var      modelInDb = OriginalCollection.Find(filterDef).FirstOrDefault();

            if (modelInDb == null)
            {
                Add(model, time);
            }
            else
            {
                Edit(model, modelInDb, time);
            }
        }
Ejemplo n.º 2
0
        public void Edit(T model, DateTime?modelTime = null)
        {
            DateTime time      = modelTime ?? DateTime.Now;
            var      filterDef = GetFilterDefinitionOfKey(model);
            var      modelInDb = OriginalCollection.Find(filterDef).FirstOrDefault();

            if (modelInDb == null)
            {
                throw new Exception("can't find such record");
            }
            else
            {
                Edit(model, modelInDb, time);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 从主表复制到
 /// </summary>
 /// <param name="time"></param>
 /// <returns></returns>
 private bool CopyToSnap(IMongoCollection <T> snapCollection)
 {
     if (snapCollection.CountDocuments(x => true) > 0)
     {
         return(false);
     }
     lock (CopyLocker)
     {
         if (snapCollection.CountDocuments(x => true) > 0)
         {
             return(true);//被别的线程锁定之后再进入的。
         }
         snapCollection.InsertMany(
             OriginalCollection.Find(x => !x.Deleted).ToEnumerable()
             );
     }
     return(true);
 }
Ejemplo n.º 4
0
        private T GetModelFromLast <TKey>(TKey key)
        {
            var model = OriginalCollection.Find(GetFilterDefinitionOfKey(key)).FirstOrDefault();

            return(model);
        }