예제 #1
0
        /// <summary>
        ///  Insert dla sporej liczby danych, typu Bulk, pod spodem tmp table i merge
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entities"></param>
        /// <returns></returns>
        public async Task InsertBulk <T>(List <T> entities) where T : class
        {
            try
            {
                await _databaseContext.BulkInsertAsync(entities);

                await _databaseContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                throw new DbUpdateConcurrencyException("Dane nie zostały zapisane. Ktoś w międzyczasie wykonał ich zmianę. Odśwież i spróbuj ponownie", ex);
            }
            finally
            {
                Parallel.ForEach(entities, p =>
                {
                    _databaseContext.Entry(p).State = EntityState.Detached;
                });
            }
        }