public async Task CommitAsync() { try { // commit transaction if there is one active if (_transaction != null && _transaction.IsActive) { _session.Flush(); _session.Clear(); } if (_transaction != null) { await _transaction.CommitAsync(); } } catch { // rollback if there was an exception if (_transaction != null && _transaction.IsActive) { await _transaction.RollbackAsync(); } throw; } finally { CloseSession(); } }
public async Task <ActionResult> Post([FromQuery] int zapisid, string filename, DateTime lastmodified, long size, [FromForm] IFormFile file) { try { var dok = _session.Get <Zapis>(zapisid); //var kor = _session.QueryOver<Korisnik>() // .Where(x => x.KorisnickoIme == User.Identity.Name) // .SingleOrDefault<Korisnik>(); //dok.Rbr = Helper.RedniBroj(_session, "zapis"); using (var ms = new MemoryStream()) { await file.CopyToAsync(ms); dok.Data = ms.ToArray(); dok.Size = size; dok.FileName = filename; dok.DateLastModified = lastmodified; } _session.SaveOrUpdate(dok); _session.Flush(); return(Json(new { Success = true, Message = "", Objekat = dok })); } catch (Exception ex) { _logger.LogError(ex.Message); return(Json(new { Success = false, Message = ex.Message })); } }
public CategoryUpdateResponse Update(CategoryUpdateRequest request) { var response = new CategoryUpdateResponse(); var existing = CheckForExisting(request.Name); if (existing != null && existing.Id != request.Id) { response.ErrorMessage = "Update would create a duplicate"; } else { var existingById = _categoryRepository.Get(request.Id); if (existingById == null) { response.ErrorMessage = "Category not found"; } else { _session.Flush(); existingById.Name = request.Name; existingById.LastUpdate = DateTime.UtcNow; _categoryRepository.Update(existingById); response.Category = new Category() { Id = existingById.Id, Name = existingById.Name, LastUpdate = existingById.LastUpdate }; } } return(response); }
public void AfterInvoke(object correlationState) { foreach (ISessionFactory sessionFactory in sfp) { ISession session = CurrentSessionContext.Unbind(sessionFactory); if (!session.IsOpen) { continue; } try { session.Flush(); if (session.Transaction.IsActive) { session.Transaction.Commit(); } } catch (Exception) { if (session.Transaction.IsActive) { session.Transaction.Rollback(); } throw; } finally { session.Close(); session.Dispose(); } } }
public FilmCreateResponse Add(FilmCreateRequest request) { var response = new FilmCreateResponse(); // Get language var lang = _languageRepository.Get(request.Film.LanguageId); var origLang = _languageRepository.Get(request.Film.OriginalLanguageId ?? 0); var film = new en.Film { Language = lang, OriginalLanguage = origLang, Title = request.Film.Title, Description = request.Film.Description, ReleaseYear = request.Film.ReleaseYear, RentalDuration = request.Film.RentalDuration, Length = request.Film.Length, RentalRate = request.Film.RentalRate, Rating = request.Film.Rating, SpecialFeatures = request.Film.SpecialFeatures, ReplacementCost = request.Film.ReplacementCost, LastUpdate = DateTime.Now }; _session.Save(film); _session.Flush(); response.Film = request.Film; response.Film.Id = film.Id; response.Film.LastUpdate = film.LastUpdate; return(response); }
public async Task <ActionResult> Post([FromQuery] string entitet, int entitetid, string entitetopis, string filename, DateTime lastmodified, long size, [FromForm] IFormFile file) { try { var dok = new Dokument() { FileName = filename, Entitet = entitet, EntitetId = entitetid, EntitetOpis = entitetopis, DateLastModified = lastmodified, Size = size }; using (var ms = new MemoryStream()) { await file.CopyToAsync(ms); dok.Data = ms.ToArray(); dok.DateLastModified = lastmodified; } _session.SaveOrUpdate(dok); _session.Flush(); return(Json(new { Success = true, Message = "" })); } catch (Exception ex) { _logger.LogError(ex.Message); return(Json(new { Success = false, Message = ex.Message })); } }
public object Save <T>(T entity) where T : class { NH.ISession session = Session; object obj = session.Save(entity); session.Flush(); return(obj); }
public IActionResult Edit(Edit mdl) { User uID = _session.Get <User>(mdl.Id); using (var txn = _session.BeginTransaction()) { uID.Id = mdl.Id; uID.Username = mdl.UserName; uID.Password = mdl.Password; uID.Email = mdl.Email; uID.DOB = mdl.DOB; uID.Country = mdl.Country; uID.Bio = mdl.Bio; _session.SaveOrUpdate(uID); _session.Flush(); txn.Commit(); } return(RedirectToAction("Index")); }
private void MvcApplication_EndRequest(object sender, System.EventArgs e) { if (Context.Items.Contains(NHibernateModule.SESSION_KEY)) { Debug.WriteLine("Disposing the NHibernate session"); NHibernate.ISession Session = (NHibernate.ISession)Context.Items[NHibernateModule.SESSION_KEY]; Session.Flush(); Session.Dispose(); Context.Items[NHibernateModule.SESSION_KEY] = null; } }
public static void flushAndDisposeSession() { NHibernate.ISession currentSession = getCurrentSession(); currentSession.Flush(); //currentSession.Close(); currentSession.Dispose(); var context = httpContextAccessor.HttpContext; context.Items.Remove(CurrentSessionKey); }
public IActionResult Edit(Edit mdl) { Movie mID = _session.Get <Movie>(mdl.Id); Review review = mID.Reviews.SingleOrDefault(r => r.User.Id == _context.UserId); using (var txn = _session.BeginTransaction()) { mID.Id = mdl.Id; mID.MovieName = mdl.MovieName; mID.LengthInMin = mdl.LengthInMin; mID.Summary = mdl.Summary; mID.Year = mdl.Year; mID.Genre = mdl.Genre; mID.ContentRating = mdl.ContentRating; mID.Language = mdl.Language; review.Rating = mdl.Rating; review.ReviewText = mdl.ReviewText; //_session.SaveOrUpdate(mID); _session.Flush(); txn.Commit(); } return(RedirectToAction("Index")); }
public ActionResult BrisiUplatu(int id) { //this.repo.find("Dokument?entitet=" + entitet + "&entitetopis=" + entitetoipis + "&entitetid" + entitet) try { var obj = _session.Load <Uplata>(id); obj.Obrisan = true; _session.SaveOrUpdate(obj); _session.Flush(); return(Json(new { Success = true, Message = "", obj = true })); } catch (Exception ex) { _logger.LogError(ex.Message); return(Json(new { Success = false, Message = ex.Message })); } }
public void SaveOrUpdate <T>(T entity) where T : class { NH.ISession session = Session; session.SaveOrUpdate(entity); session.Flush(); }
public void Delete <T>(T entity) where T : class { NH.ISession session = Session; session.Delete(entity); session.Flush(); }
void OpenFiles (IList<string> filepaths, TreeNode rootNode = null) { try { var xml_filepaths = filepaths.Where(filepath => !filepath.EndsWith(".idpDB")); var idpDB_filepaths = filepaths.Where(filepath => filepath.EndsWith(".idpDB")); bool openSingleFile = xml_filepaths.Count() + idpDB_filepaths.Count() == 1; if (xml_filepaths.Count() + idpDB_filepaths.Count() == 0) { if (Program.IsHeadless) { Console.Error.WriteLine("Headless mode must be passed some idpDB files to merge."); Close(); return; } else throw new Exception("no filepaths to open"); } if (Program.IsHeadless && xml_filepaths.Any()) Program.HandleUserError(new Exception("headless mode only supports merging and filtering idpDB files")); // warn if idpDBs already exist bool warnOnce = false, skipReconvert = false; var skipFiles = new List<string>(); foreach (string filepath in xml_filepaths) { string idpDB_filepath = Path.ChangeExtension(filepath.Replace(".pep.xml", ".pepXML"), ".idpDB"); if (File.Exists(idpDB_filepath)) { if (!warnOnce && MessageBox.Show("Some of these files have already been converted. Do you want to reconvert them?", "Result already converted", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) != DialogResult.Yes) skipReconvert = true; warnOnce = true; if (skipReconvert) skipFiles.Add(filepath); else File.Delete(idpDB_filepath); } } xml_filepaths = xml_filepaths.Where(o => !skipFiles.Contains(o)); idpDB_filepaths = idpDB_filepaths.Union(skipFiles.Select(o => Path.ChangeExtension(o.Replace(".pep.xml", ".pepXML"), ".idpDB"))); // determine if merged filepath exists and that it's a valid idpDB var potentialPaths = filepaths.Select(item => Path.Combine(Path.GetDirectoryName(item) ?? string.Empty, Path.GetFileNameWithoutExtension(item) ?? string.Empty) + ".idpDB").ToList(); // for Mascot files (*.dat), use parseSource() to get the real filename, else save time by just using filename without extension var sourceNames = filepaths.Select(o => Path.Combine(Path.GetDirectoryName(o), o.ToLower().EndsWith(".dat") ? Parser.ParseSource(o) : Path.GetFileNameWithoutExtension(o.Replace(".pep.xml", ".pepXML")) + Path.GetExtension(o))); string commonFilepath = Util.GetCommonFilename(sourceNames); if (!openSingleFile && potentialPaths.Contains(commonFilepath)) commonFilepath = commonFilepath.Replace(".idpDB", " (merged).idpDB"); string mergeTargetFilepath = defaultMergedOutputFilepath ?? commonFilepath; if (!openSingleFile && File.Exists(mergeTargetFilepath) && Program.IsHeadless) File.Delete(mergeTargetFilepath); else { // check that the single idpDB is writable; if not, it needs to be copied if (openSingleFile) { // sanity check that file exists after the path manipulation above if (idpDB_filepaths.Count() == 1 && !File.Exists(mergeTargetFilepath)) throw new Exception(String.Format("error in internal path manipulation for opening single idpDB: {0} transformed to {1} which does not exist", sourceNames.First(), mergeTargetFilepath)); string oldFilename = mergeTargetFilepath; while (true) { if (canReadWriteInDirectory(Path.GetDirectoryName(mergeTargetFilepath))) break; MessageBox.Show("IDPicker files cannot be opened from a read-only location, pick a writable path to copy it to."); if (!saveFileDialog(ref mergeTargetFilepath)) return; } // if location was changed, copy to the new location if (oldFilename != mergeTargetFilepath) { toolStripStatusLabel.Text = "Copying idpDB..."; File.Copy(oldFilename, mergeTargetFilepath, true); } } else { // if not headless and MergedOutputFilepath is unset, // then give the user a chance to override the merge target location if (!Program.IsHeadless && defaultMergedOutputFilepath == null && !saveFileDialog(ref mergeTargetFilepath, "Choose where to create the merged idpDB")) return; while (true) { if (!canReadWriteInDirectory(Path.GetDirectoryName(mergeTargetFilepath))) { MessageBox.Show("IDPicker files cannot be merged to a read-only location, pick a writable path."); if (Program.IsHeadless || !saveFileDialog(ref mergeTargetFilepath, "Pick a writable path in which to create the merged idpDB")) return; continue; } // the SaveFileDialog already asked the user to confirm overwriting an existing file if (File.Exists(mergeTargetFilepath)) File.Delete(mergeTargetFilepath); break; } } } // set main window title BeginInvoke(new MethodInvoker(() => Text = mergeTargetFilepath)); //set up delayed messages so non-fatal errors that occur at the end arent lost var delayedMessages = new List<string[]>(); if (xml_filepaths.Count() > 0) { importCancelled = false; // loop until the import settings don't result in any fatal errors, or user cancels while (!importCancelled) { Parser parser = new Parser(); Invoke(new MethodInvoker(() => parser.ImportSettings += importSettingsHandler)); var ilr = new IterationListenerRegistry(); var progressForm = new ProgressForm(xml_filepaths, ilr) { Text = "Import Progress", StartPosition = FormStartPosition.CenterParent, }; Invoke(new MethodInvoker(() => progressForm.Show(this))); try { parser.Parse(xml_filepaths, ilr); // read log for non-fatal errors //string log = Logger.Reader.ReadToEnd().Trim(); //if (log.Length > 0) // Invoke(new MethodInvoker(() => UserDialog.Show(this, "Log Messages", new TextBox {Multiline = true, Text = log.Replace("\n", "\r\n"), ReadOnly = true, Size = new Size(800, 600), ScrollBars = ScrollBars.Both}, MessageBoxButtons.OK))); break; // no fatal errors, break the loop } catch (Exception ex) { if (ex.Message.Contains("no peptides found mapping to a decoy protein") || ex.Message.Contains("peptides did not map to the database") || ex.Message.Contains("duplicate protein id")) Program.HandleUserError(ex); else throw; } finally { importCancelled |= progressForm.Cancelled; Invoke(new MethodInvoker(() => progressForm.Close())); } } if (importCancelled) return; idpDB_filepaths = idpDB_filepaths.Union(xml_filepaths.Select(o => Path.ChangeExtension(o.Replace(".pep.xml", ".pepXML"), ".idpDB"))); } if (idpDB_filepaths.Count() > 1) { var merger = new MergerWrapper(mergeTargetFilepath, idpDB_filepaths); toolStripStatusLabel.Text = "Merging results..."; merger.MergingProgress += progressMonitor.UpdateProgress; merger.Start(); idpDB_filepaths = new List<string>() {mergeTargetFilepath}; } // HACK: this needs to be handled more gracefully if (!IsHandleCreated) return; if (Properties.GUI.Settings.Default.WarnAboutNonFixedDrive && !Util.IsPathOnFixedDrive(mergeTargetFilepath)) { string oldFilename = mergeTargetFilepath; bool copyLocal = true; Invoke(new MethodInvoker(() => { var form = new NonFixedDriveWarningForm(); if (form.ShowDialog(this) == DialogResult.Ignore) copyLocal = false; })); if (copyLocal) { string newFilename = Path.GetFileName(mergeTargetFilepath); if (!saveFileDialog(ref newFilename, "Pick a local path to copy the idpDB to")) return; toolStripStatusLabel.Text = "Copying idpDB..."; File.Copy(oldFilename, newFilename, true); mergeTargetFilepath = newFilename; // set main window title BeginInvoke(new MethodInvoker(() => Text = mergeTargetFilepath)); } } if (!IsHandleCreated) return; Util.PrecacheFile(mergeTargetFilepath, progressMonitor.UpdateProgress); if (!IsHandleCreated) return; BeginInvoke(new MethodInvoker(() => { clearProgress(); toolStripStatusLabel.Text = "Upgrading schema and creating session factory..."; statusStrip.Refresh(); })); var sessionFactory = DataModel.SessionFactoryFactory.CreateSessionFactory(mergeTargetFilepath, new SessionFactoryConfig { WriteSqlToConsoleOut = true }); if (logForm != null) logForm.SetSessionFactory(sessionFactory); BeginInvoke(new MethodInvoker(() => { // reload qonverter settings because the ids may change after merging toolStripStatusLabel.Text = "Loading qonverter settings..."; statusStrip.Refresh(); session = sessionFactory.OpenSession(); session.DefaultReadOnly = true; session.CreateSQLQuery("PRAGMA temp_store=MEMORY; PRAGMA mmap_size=70368744177664; -- 2^46").ExecuteUpdate(); toolStripStatusLabel.Text = "Refreshing group structure..."; statusStrip.Refresh(); var usedGroups = GroupingControlForm.SetInitialStructure(rootNode, session, defaultApplySourceGroupHierarchy); if (usedGroups != null && usedGroups.Any()) { var allGroupsByName = session.Query<SpectrumSourceGroup>().ToDictionary(o => o.Name); var usedGroupsByName = usedGroups.ToDictionary(o => o.Name); // if usedGroupsByName does not contain a key from allGroupsByName, delete the group foreach (var unusedGroup in allGroupsByName.Where(o => !usedGroupsByName.ContainsKey(o.Key))) session.Delete(unusedGroup); } session.Flush(); // check for embedded gene metadata; // if it isn't there, ask the user if they want to embed it; // if not, disable gene-related features if (!Program.IsHeadless && !Embedder.HasGeneMetadata(mergeTargetFilepath) && Properties.GUI.Settings.Default.WarnAboutNoGeneMetadata) { bool embedGeneMetadata = true; Invoke(new MethodInvoker(() => { var form = new EmbedGeneMetadataWarningForm(); if (form.ShowDialog(this) == DialogResult.Ignore) embedGeneMetadata = false; })); if (embedGeneMetadata) { loadRefSeqGeneMetadata(); // will call OpenFiles() after embedding, so return immediately return; } } else { // disable gene-related features } qonverterSettingsByAnalysis = session.Query<QonverterSettings>().ToDictionary(o => session.Get<Analysis>(o.Id)); _layoutManager.SetSession(session); //set or save default layout dockPanel.Visible = true; _layoutManager.CurrentLayout = _layoutManager.GetCurrentDefault(); //breadCrumbControl.BreadCrumbs.Clear(); // pick a default RoundToNearest based on number of distinct modifications decimal roundToNearest = 1m; var distinctModificationFormat = new DistinctMatchFormat(); var modMasses = session.CreateQuery("SELECT DISTINCT mod.MonoMassDelta FROM Modification mod").List<double>(); for (int i = 4; i > 0; --i) { distinctModificationFormat.ModificationMassRoundToNearest = (decimal) (1.0 / Math.Pow(10, i)); if (modMasses.Select(o => distinctModificationFormat.Round(o)).Distinct().Count() < 30) { roundToNearest = distinctModificationFormat.ModificationMassRoundToNearest.Value; break; } } modificationTableForm.RoundToNearest = roundToNearest; basicFilter = DataFilter.LoadFilter(session); // if user has overridden filters from the command-line, make sure to reapply the filter if (!defaultDataFilter.PersistentDataFilter.Equals(defaultDataFilter.OriginalPersistentDataFilter)) basicFilter = null; if (basicFilter == null) { basicFilter = new DataFilter(defaultDataFilter); basicFilterControl.DataFilter = basicFilter; viewFilter = basicFilter; ApplyBasicFilter(); } else { basicFilterControl.DataFilter = basicFilter; viewFilter = basicFilter; try { // check that the unfiltered tables exist session.CreateSQLQuery("SELECT COUNT(*) FROM UnfilteredProtein").UniqueResult(); setData(); } catch { ApplyBasicFilter(); } } if (TestUILayout) { int i = 0; foreach(var form in dockPanel.Contents) { ++i; form.DockingHandler.DockAreas = (form.DockingHandler.DockAreas | DockAreas.Float); var rect = dockPanel.ClientRectangle; rect.Offset(i * 15, i * 15); rect.Size = new System.Drawing.Size(960, 600); form.DockingHandler.Show(dockPanel, rect); } } toolStripStatusLabel.Text = "Ready"; Activate(); })); //show list of delayed non-fatal errors if (delayedMessages.Any()) { var sb = new StringBuilder(); foreach (var message in delayedMessages) sb.AppendLine(string.Format("{0}:{1}{2}{1}", message[0], Environment.NewLine, message[1])); var messageString = sb.ToString(); ShowExpandedMessageBox(messageString); } } catch (Exception ex) { Program.HandleException(ex); } }
public void Commit() { session.Flush(); }
private static void OptionsScreen(NHibernate.ISession session) { Console.WriteLine("Recepie Database."); Console.WriteLine(); Console.WriteLine("Make a choise: "); Console.WriteLine("[1] Create new recepie"); Console.WriteLine("[2] Remove recepie"); Console.WriteLine("[3] Update recepie"); Console.WriteLine("[4] Display all recepies"); Console.WriteLine("[5] Search recepies by category"); Console.WriteLine("[6] Search recepies by ingredient"); //Console.WriteLine("[S]earch recepies by recepie name"); Console.WriteLine("[7] Generate new recepielist"); Console.WriteLine("[8] Display all recepielists"); Console.WriteLine("[F]ill with testdata"); Console.WriteLine("[D]elete entire database "); Console.WriteLine("[C]reate database"); Console.WriteLine("[Q]uit"); Console.Write(""); string choise = Console.ReadLine(); switch (choise.ToUpper()) { case "1": CreateNewRecepie(session); OptionsScreen(session); break; case "2": RemoveRecepie(); OptionsScreen(session); break; case "3": UpdateRecepie(); OptionsScreen(session); break; case "4": session.Flush(); DisplayRecepies(session); break; case "5": DisplayRecepiesByCategory(session); break; case "6": DisplayRecepiesByIngredient(session); break; //case "S": // SearchRecepies(); // DisplayRecepieProperties(session); // break; case "7": GenerateRecepielist(session); OptionsScreen(session); break; case "8": DispalyRecepieLists(session); OptionsScreen(session); break; case "F": GenerateTestData(session); OptionsScreen(session); break; case "D": DeleteDatabase(); session.Flush(); OptionsScreen(session); break; case "C": CreateDatabase(); session.Flush(); OptionsScreen(session); break; case "Q": DbService.CloseSession(session); break; default: OptionsScreen(session); break; } }