/// <summary> /// Adds the specified entry. /// </summary> /// <param name="entry">The entry.</param> /// <exception cref="DuplicateNameException">Thrown when there is /// already an entry with the same hash exists.</exception> public void AddChunk(DataChunk chunk) { try { _session.Save(chunk); } catch (NHibernate.Exceptions.GenericADOException ex) { throw new DuplicateNameException( "Chunk hash needs to be unique.", ex); } }
/// <summary> /// Adds the chunk if not exists. /// </summary> /// <param name="session">The session.</param> /// <param name="chunk">The chunk.</param> /// <returns>True if the chunk already exists and this chunk is not /// inserted.</returns> public static bool AddChunkIfNotExists(IStatelessSession session, DataChunk chunk) { ICriteria crit = session.CreateCriteria(typeof(DataChunk)); ICriterion hashEq = Expression.Eq("Hash", chunk.Hash); crit.Add(hashEq); if ((DataChunk)crit.UniqueResult() == null) { // Save if no duplicate is found. session.Insert(chunk); return false; } else { return true; } }