Esempio n. 1
0
 /// <summary>
 /// 连接字符串,xql命令集合,对象
 /// </summary>
 /// <param name="ormDataBase"></param>
 /// <param name="infos"></param>
 /// <param name="saveCompiler"></param>
 public SqlServerUnitofwork(OrmDataBaseInfo ormDataBase, IList <SaveInfo> infos, ISaveCompiler saveCompiler)
 {
     Connection   = new SqlConnection(ormDataBase.ConnnectString);
     OrmDataBase  = ormDataBase;
     Infos        = infos;
     SaveCompiler = saveCompiler;
 }
Esempio n. 2
0
 /// <summary>
 /// 检查连接一次
 /// </summary>
 /// <param name="ormDataBase"></param>
 protected virtual void CheckConnectionAlive <T>(OrmDataBaseInfo ormDataBase) where T : DbConnection
 {
     lock (CheckAliveLocker)
     {
         if (ormDataBase.IsStartCheckAlive || !ormDataBase.IsException)
         {
             return;
         }
         ormDataBase.IsStartCheckAlive = true;
     }
     System.Threading.Thread.Sleep(ormDataBase.CheckAlivePeriod);
     try
     {
         using (var sqlcon = CreateTryConnection <T>(ormDataBase))
         {
             sqlcon.ConnectionString = string.Format("{0};Connect Timeout=2000;", ormDataBase.ConnnectString);
             sqlcon.Open();
             sqlcon.Close();
             ormDataBase.IsException       = false;
             ormDataBase.IsStartCheckAlive = false;
         }
     }
     catch (Exception ex)
     {
         Log.AddException(ex);
         ormDataBase.IsException       = true;
         ormDataBase.IsStartCheckAlive = false;
         Action <OrmDataBaseInfo> action = CheckConnectionAlive <T>;
         action.BeginInvoke(ormDataBase, null, null);
     }
 }
Esempio n. 3
0
 /// <summary>
 /// 得到事务
 /// </summary>
 /// <param name="ormDataBase"></param>
 /// <param name="infos"></param>
 /// <param name="unitOfWorks"></param>
 /// <returns></returns>
 public override void AddUnitofwork(OrmDataBaseInfo ormDataBase, IList <SaveInfo> infos, IList <IUnitofwork> unitOfWorks)
 {
     foreach (var unitOfWork in unitOfWorks)
     {
         if (unitOfWork.GetHashCode() == ormDataBase.ConnnectString.GetHashCode())
         {
             var tunitofwork = (UnitofworkBase)unitOfWork;
             var tempKeys    = new Dictionary <SaveInfo, SaveInfo>(infos.Count);
             foreach (var info in tunitofwork.Infos)
             {
                 tempKeys.Add(info, info);
             }
             foreach (var info in infos)
             {
                 if (!tempKeys.ContainsKey(info))
                 {
                     tempKeys.Add(info, info);
                 }
             }
             tunitofwork.Infos = tempKeys.Values.ToList();
             return;
         }
     }
     unitOfWorks.Add(new SqlServerUnitofwork(ormDataBase, infos, SaveCompiler));
 }
Esempio n. 4
0
        /// <summary>
        /// 获取对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public override T GetInfos <T>(OrmDataBaseInfo ormDataBase, OrmObjectInfo obj, QueryInfo query)
        {
            if (obj == null)
            {
                return(default(T));
            }
            var cmd = new SqlCommand();

            Translate(cmd, obj, query);
            return(GetInfosByCommand <T>(ormDataBase, obj, cmd, query));
        }
Esempio n. 5
0
 /// <summary>
 /// CommandInfo得到返回结果
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="ormDataBase"></param>
 /// <param name="obj"></param>
 /// <param name="cmd"></param>
 /// <param name="query"></param>
 /// <returns></returns>
 protected virtual T GetInfosByCommand <T>(OrmDataBaseInfo ormDataBase, OrmObjectInfo obj, SqlCommand cmd, QueryInfo query)
 {
     if (string.IsNullOrEmpty(cmd.CommandText))
     {
         return(default(T));
     }
     using (var sqlcon = GetConnnection <SqlConnection>(ormDataBase.GetAllGetOrmDataBase(), query))
     {
         cmd.Connection = sqlcon;
         return(GetInfosByType <T>(query, obj, cmd));
     }
 }
Esempio n. 6
0
        /// <summary>
        /// 得到结果
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <param name="query"></param>
        /// <param name="context"></param>
        /// <param name="isLazyLoadExecute"></param>
        /// <returns></returns>
        protected virtual T GetResult <T>(OrmObjectInfo obj, QueryInfo query, IContext context, bool isLazyLoadExecute = false)
        {
            OrmDataBaseInfo db     = DataBase.GetDataBase(query.GetDataBase).GetAllGetOrmDataBase().FirstOrDefault();
            var             result = ExecuteQuery <T>(query, obj, db);

            if (query.IsLazyLoad)
            {
                LazyLoad(result, obj, context, isLazyLoadExecute);
            }
            RemoteLoad(result, query.RemoteQueries == null ? null : query.RemoteQueries.Values.ToList(), obj, isLazyLoadExecute);
            return(result);
        }
Esempio n. 7
0
 /// <summary>
 /// 执行查询存储过程
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="ormDataBase"></param>
 /// <param name="commandText"></param>
 /// <param name="commandType"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public override T ExecuteQuery <T>(OrmDataBaseInfo ormDataBase, string commandText, CommandType commandType, params object[] parameters)
 {
     if (string.IsNullOrEmpty(commandText) || ormDataBase == null)
     {
         return(default(T));
     }
     using (var sqlcon = GetConnnection <SqlConnection>(ormDataBase.GetAllGetOrmDataBase(), null))
     {
         var sqlcmd = new SqlCommand();
         sqlcmd            = FillCommandTypeCommand(sqlcmd, commandText, commandType, parameters);
         sqlcmd.Connection = sqlcon;
         return(GetInfosByType <T>(null, null, sqlcmd));
     }
 }
Esempio n. 8
0
 /// <summary>
 /// 执行存储过程
 /// </summary>
 /// <param name="ormDataBase"></param>
 /// <param name="commandText"></param>
 /// <param name="commandType"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public override int ExecuteCommand(OrmDataBaseInfo ormDataBase, string commandText, CommandType commandType, params object[] parameters)
 {
     if (string.IsNullOrEmpty(commandText) || ormDataBase == null)
     {
         return(0);
     }
     using (var sqlcon = GetConnnection <SqlConnection>(ormDataBase.GetAllSetOrmDataBase(), null))
     {
         var sqlcmd = new SqlCommand();
         sqlcmd            = FillCommandTypeCommand(sqlcmd, commandText, commandType, parameters);
         sqlcmd.Connection = sqlcon;
         return(sqlcmd.ExecuteNonQuery());
     }
 }
Esempio n. 9
0
        /// <summary>
        /// 查询故障转移
        /// </summary>
        /// <param name="ormDataBase"></param>
        /// <returns></returns>
        protected virtual T TryGetConnection <T>(OrmDataBaseInfo ormDataBase) where T : DbConnection
        {
            var sqlcon = CreateTryConnection <T>(ormDataBase);

            try
            {
                if (sqlcon.State != ConnectionState.Open)
                {
                    sqlcon.Open();
                }
                ormDataBase.UseConnect();
                return(sqlcon);
            }
            catch (Exception)
            {
                ormDataBase.IsException = true;
                return(null);
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 查询故障转移
        /// </summary>
        /// <param name="ormDataBase"></param>
        /// <returns></returns>
        protected virtual T TryGetConnection <T>(OrmDataBaseInfo ormDataBase) where T : DbConnection
        {
            var sqlcon = CreateTryConnection <T>(ormDataBase);

            try
            {
                if (sqlcon.State != ConnectionState.Open)
                {
                    sqlcon.Open();
                }
                ormDataBase.UseConnect();
                return(sqlcon);
            }
            catch (Exception ex)
            {
                Log.AddException(ex);
                ormDataBase.IsException = true;
                Action <OrmDataBaseInfo> action = CheckConnectionAlive <T>;
                action.BeginInvoke(ormDataBase, null, null);
                return(null);
            }
        }
Esempio n. 11
0
 /// <summary>
 /// 执行存储过程
 /// </summary>
 /// <param name="ormDataBase"></param>
 /// <param name="commandText"></param>
 /// <param name="commandType"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public abstract int ExecuteCommand(OrmDataBaseInfo ormDataBase, string commandText, CommandType commandType, params object[] parameters);
Esempio n. 12
0
 /// <summary>
 /// 执行查询存储过程
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="ormDataBase"></param>
 /// <param name="commandText"></param>
 /// <param name="commandType"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public abstract T ExecuteQuery <T>(OrmDataBaseInfo ormDataBase, string commandText, CommandType commandType, params object[] parameters);
Esempio n. 13
0
 /// <summary>
 /// 得到事务
 /// </summary>
 /// <param name="ormDataBase"></param>
 /// <param name="infos"></param>
 /// <param name="unitOfWorks"></param>
 public abstract void AddUnitofwork(OrmDataBaseInfo ormDataBase, IList <SaveInfo> infos, IList <IUnitofwork> unitOfWorks);
Esempio n. 14
0
 /// <summary>
 /// 获取对象
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="ormDataBase"></param>
 /// <param name="obj"></param>
 /// <param name="query"></param>
 /// <returns></returns>
 public abstract T GetInfos <T>(OrmDataBaseInfo ormDataBase, OrmObjectInfo obj, QueryInfo query);
Esempio n. 15
0
 /// <summary>
 /// 创建连接
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="ormDataBase"></param>
 /// <returns></returns>
 protected virtual T CreateTryConnection <T>(OrmDataBaseInfo ormDataBase) where T : DbConnection
 {
     return(default(T));
 }
Esempio n. 16
0
        /// <summary>
        /// 执行查询
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <param name="obj"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        protected virtual T ExecuteQuery <T>(QueryInfo query, OrmObjectInfo obj, OrmDataBaseInfo db)
        {
            var compiler = DataBase.GetCompiler(db);

            return(compiler.GetInfos <T>(db, obj, query));
        }
Esempio n. 17
0
 /// <summary>
 /// 重写
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="ormDataBase"></param>
 /// <returns></returns>
 protected override T CreateTryConnection <T>(OrmDataBaseInfo ormDataBase)
 {
     return(new SqlConnection(ormDataBase.ConnnectString) as T);
 }