コード例 #1
0
        protected async Task <List <T> > GetEntityListAsync <T>(SqlSugarProvider context, IDataReader dataReader)
        {
            Type   type       = typeof(T);
            var    fieldNames = GetDataReaderNames(dataReader);
            string cacheKey   = GetCacheKey(type, fieldNames);
            IDataReaderEntityBuilder <T> entytyList = context.Utilities.GetReflectionInoCacheInstance().GetOrCreate(cacheKey, () =>
            {
                var cacheResult = new IDataReaderEntityBuilder <T>(context, dataReader, fieldNames).CreateBuilder(type);
                return(cacheResult);
            });
            List <T> result = new List <T>();

            try
            {
                if (dataReader == null)
                {
                    return(result);
                }
                while (await((DbDataReader)dataReader).ReadAsync())
                {
                    result.Add(entytyList.Build(dataReader));
                }
            }
            catch (Exception ex)
            {
                Check.Exception(true, ErrorMessage.EntityMappingError, ex.Message);
            }
            return(result);
        }
コード例 #2
0
        private void InitContext(ConnectionConfig config)
        {
            var aopIsNull = config.AopEvents == null;

            if (aopIsNull)
            {
                config.AopEvents = new AopEvents();
            }
            _Context = new SqlSugarProvider(config);
            if (!aopIsNull)
            {
                _Context.Ado.IsEnableLogEvent = true;
            }
            this.CurrentConnectionConfig = config;
            _ThreadId = Thread.CurrentThread.ManagedThreadId.ToString();
            if (_MappingColumns == null)
            {
                this.MappingTables = new MappingTableList();
            }
            if (this.MappingColumns == null)
            {
                this.MappingColumns = new MappingColumnList();
            }
            if (this.IgnoreColumns == null)
            {
                this.IgnoreColumns = new IgnoreColumnList();
            }
            if (this.IgnoreInsertColumns == null)
            {
                this.IgnoreInsertColumns = new IgnoreColumnList();
            }
        }
コード例 #3
0
 public IDataReaderEntityBuilder(SqlSugarProvider context, IDataRecord dataRecord, List <string> fieldNames)
 {
     this.Context        = context;
     this.DataRecord     = dataRecord;
     this.DynamicBuilder = new IDataReaderEntityBuilder <T>();
     this.ReaderKeys     = fieldNames;
 }
コード例 #4
0
        private SqlSugarProvider GetContext()
        {
            SqlSugarProvider result = null;

            if (IsSameThreadAndShard())
            {
                result = SameThreadAndShard();
            }
            else if (IsNoSameThreadAndShard())
            {
                result = NoSameThreadAndShard();
            }
            else if (IsSynchronization())
            {
                result = Synchronization();
            }
            else if (IsSingleInstanceAsync())
            {
                result = NoSameThreadAsync();
            }
            else if (IsAsync())
            {
                result = Synchronization();
            }
            else
            {
                IsSingleInstance = true;
                result           = NoSameThread();
            }
            if (result.Root == null)
            {
                result.Root = this;
            }
            return(result);
        }
コード例 #5
0
        public static CacheKey GetKey(SqlSugarProvider context, QueryBuilder queryBuilder)
        {
            CacheKey result = new CacheKey();

            result.Database = context.Context.Ado.Connection.Database;
            AddTables(context, queryBuilder, result);
            AddIdentificationList(queryBuilder, result);
            return(result);
        }
コード例 #6
0
 private void InitTenant(SugarTenant Tenant)
 {
     if (Tenant.Context == null)
     {
         Tenant.Context = new SqlSugarProvider(Tenant.ConnectionConfig);
     }
     _Context = Tenant.Context;
     this.CurrentConnectionConfig = Tenant.ConnectionConfig;
 }
コード例 #7
0
 internal SaveableProvider(SqlSugarProvider context, T saveObject)
 {
     this.saveObjects = new List <T>()
     {
         saveObject
     };
     this.Context = context;
     this.Context.InitMappingInfo <T>();
 }
コード例 #8
0
 public SqlSugarException(SqlSugarProvider context, Exception ex, string sql, object pars)
     : base(ex.Message)
 {
     this.Sql            = sql;
     this.Parametres     = pars;
     this.InnerException = ex.InnerException;
     this.StackTrace     = ex.StackTrace;
     this.TargetSite     = ex.TargetSite;
     this.Source         = ex.Source;
 }
コード例 #9
0
        private SqlSugarProvider CopyClient()
        {
            var result = new SqlSugarProvider(this.CurrentConnectionConfig);

            result.MappingColumns      = _MappingColumns;
            result.MappingTables       = _MappingTables;
            result.IgnoreColumns       = _IgnoreColumns;
            result.IgnoreInsertColumns = _IgnoreInsertColumns;

            return(result);
        }
コード例 #10
0
        public SqlSugarProvider CopyContext(bool isCopyEvents = false)
        {
            var newClient = new SqlSugarProvider(this.TranslateCopy(Context.CurrentConnectionConfig));

            newClient.CurrentConnectionConfig.ConfigureExternalServices = Context.CurrentConnectionConfig.ConfigureExternalServices;
            newClient.MappingColumns      = this.TranslateCopy(Context.MappingColumns);
            newClient.MappingTables       = this.TranslateCopy(Context.MappingTables);
            newClient.IgnoreColumns       = this.TranslateCopy(Context.IgnoreColumns);
            newClient.IgnoreInsertColumns = this.TranslateCopy(Context.IgnoreInsertColumns);
            if (isCopyEvents)
            {
                newClient.QueryFilter = Context.QueryFilter;
                newClient.CurrentConnectionConfig.AopEvents = Context.CurrentConnectionConfig.AopEvents;
            }
            return(newClient);
        }
コード例 #11
0
 internal SaveableProvider(SqlSugarProvider context, List <T> saveObjects)
 {
     this.saveObjects = saveObjects;
     this.Context     = context;
     this.Context.InitMappingInfo <T>();
 }
コード例 #12
0
 public SqlSugarException(SqlSugarProvider context, string message, string sql)
     : base(message)
 {
     this.Sql = sql;
 }
コード例 #13
0
 private void AddCallContext(SqlSugarProvider context)
 {
     CallContext.ContextList.Value = new List <SqlSugarProvider>();
     CallContext.ContextList.Value.Add(context);
 }
コード例 #14
0
 public static object GetEntity(this IDataReader dr, SqlSugarProvider context)
 {
     return(null);
 }
コード例 #15
0
        public static T GetOrCreate <T>(ICacheService cacheService, QueryBuilder queryBuilder, Func <T> getData, int cacheDurationInSeconds, SqlSugarProvider context)
        {
            CacheKey key       = CacheKeyBuider.GetKey(context, queryBuilder);
            string   keyString = key.ToString();
            var      result    = cacheService.GetOrCreate(keyString, getData, cacheDurationInSeconds);

            return(result);
        }
コード例 #16
0
 public AopProvider(SqlSugarProvider context)
 {
     this.Context = context;
     this.Context.Ado.IsEnableLogEvent = true;
 }
コード例 #17
0
 public SqlSugarException(SqlSugarProvider context, string message, object pars)
     : base(message)
 {
     this.Parametres = pars;
 }