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); } }
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); } }
/// <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); }
private T GetModelFromLast <TKey>(TKey key) { var model = OriginalCollection.Find(GetFilterDefinitionOfKey(key)).FirstOrDefault(); return(model); }