123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using Abp.Collections.Extensions;
- using SnapshotWinFormsApp.Application.Dtos;
- using SnapshotWinFormsApp.Entities.NewHotline;
- using SnapshotWinFormsApp.Repository.Interfaces;
- using SqlSugar;
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace SnapshotWinFormsApp.Repository;
- public class ConcurrentQueueRepository<TEntity> where TEntity : Entity, new()
- {
- private ConcurrentQueue<TEntity> _queue = new ConcurrentQueue<TEntity>();
- public void Insert(TEntity entity, ISqlSugarClient sugarClient, bool isEnd)
- {
- _queue.Enqueue(entity);
- if (_queue.Count != 1000 && isEnd == false) return;
- sugarClient.Fastest<TEntity>().BulkCopy(_queue.ToList());
- _queue.Clear();
- }
- }
- public class BaseRepository<T> : IBaseRepository<T> where T : Entity, new()
- {
- private readonly SqlSugarClient _db;
- public readonly ConcurrentQueueRepository<T> _queue;
- public SqlSugarClient db => this._db;
- public BaseRepository(CreateInstanceInDto inDto)
- {
- var context = inDto.DbSqlServer;
- _db = context.DbItems.GetValueOrDefault(inDto.Key + "PGSQLDB");
- _queue = new ConcurrentQueueRepository<T>();
- }
- public async Task<List<T>> GetAllAsync(CancellationToken token)
- {
- return _db.Queryable<T>().ToList();
- }
- public T GetById(int id)
- {
- return _db.Queryable<T>().InSingle(id);
- }
- public async Task<string> InsertAsync(T entity, CancellationToken token)
- {
- if (entity.Id.IsNullOrEmpty())
- entity.InitId();
- await _db.Insertable(entity).ExecuteCommandAsync(token);
- return entity.Id;
- }
- public ISugarQueryable<T> Queryable()
- {
- return _db.Queryable<T>();
- }
- public void Update(T entity)
- {
- _db.Updateable<T>(entity).ExecuteCommand();
- }
- public IUpdateable<T> Updateable()
- => _db.Updateable<T>();
- public async Task<int> ExecuteSqlAsync(string sql)
- {
- return await _db.Ado.ExecuteCommandAsync(sql, new List<SugarParameter>());
- }
- public DataTable GetDataTable(string sql)
- => _db.Ado.GetDataTable(sql);
- public string InsertBulk(T entity, bool isEnd)
- {
- if (entity.Id.IsNullOrEmpty())
- entity.InitId();
- _queue.Insert(entity,_db, isEnd);
- return entity.Id;
- }
- }
|