Example #1
0
        public static DbConnection OpenConnection(this AppModule module)
        {
            DbConnection conn = null;

            if (module.Connection.UseLongConnection)
            {
                conn = GetExistsConnection(module.Name);
                if (conn == null)
                {
                    lock (module)
                    {
                        conn = GetExistsConnection(module.Name);
                        if (conn == null)
                        {
                            conn = OpenNewConnection(module);
                        }

                        _Connections.TryAdd(module.Name, conn);
                        _ConnectionNames.TryAdd(conn, module.Name);
                    }
                }
            }
            else
            {
                conn = OpenNewConnection(module);
            }

            return(conn);
        }
Example #2
0
        public static int ExecuteNoneQuery(AppModule module, SqlCommand sqlcommand, params object[] namevalues)
        {
            var db     = module.OpenConnection();
            var result = DBConn.ExecuteNoneQuery(db, sqlcommand, namevalues);

            db.CloseConnection();
            return(result);
        }
Example #3
0
        public static IEnumerable <T> ExecuteCommand <T>(AppModule module, SqlCommand sqlcommand, params object[] namevalues) where T : IEntityBase, new()
        {
            var db     = module.OpenConnection();
            var result = DBConn.ExecuteQuery <T>(db, sqlcommand, namevalues).ToList();

            db.CloseConnection();
            return(result);
        }
Example #4
0
        private static DbConnection OpenNewConnection(AppModule module)
        {
            var factory = DbProviderFactories.GetFactory(
                string.IsNullOrWhiteSpace(module.Connection.ProviderName) ? "System.Data.SqlClient" : module.Connection.ProviderName);
            var conn = factory.CreateConnection();

            conn.ConnectionString = module.Connection.ConnectionString;
            conn.Open();

            //conn.Log(string.Format("新打开模块数据库连接[{0}]", module.Name), Category.Debug);
            return(conn);
        }
Example #5
0
        public static IEnumerable <CommandItem> CreateDefaultCommands(this AppModule module, Table table)
        {
            var dbsetting = CodeSetting.Current.DBSettings.Where(db => db.ProviderName.Equals(module.Connection.ProviderName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

            if (dbsetting == null)
            {
                yield break;
            }

            SqlStringBuilder sqlbuilder = new SqlStringBuilder(dbsetting);

            foreach (var item in sqlbuilder.CreateDefaultCommands(table))
            {
                yield return(item);
            }
        }
Example #6
0
        public static IEnumerable <Table> LoadTables(this AppModule module)
        {
            try
            {
            }
            catch (Exception)
            {
                throw;
            }
            var conn = module.OpenConnection();

            string[] restrictions = new string[4];
            restrictions[3] = "BASE TABLE";
            DataTable stable = conn.GetSchema("Tables", restrictions);

            foreach (DataRow row in stable.Rows)
            {
                Table table = null;
                try
                {
                    string tableName = row[1].ToString().Equals("dbo", StringComparison.OrdinalIgnoreCase) ? row[2].ToString() : string.Format("{0}.{1}", row[1], row[2]);
                    string name      = row[2].ToString();
                    if (module.Filter.Length > 0 && (!name.StartsWith(module.Filter, StringComparison.OrdinalIgnoreCase)))
                    {
                        continue;
                    }
                    table = new Table
                    {
                        Name     = row[2].ToString(),
                        Schema   = row[1].ToString(),
                        CodeName = row[2].ToString().ToFormatedName(),
                        IsFromDB = true
                    };
                    GetColumns(module, row[1].ToString(), row[2].ToString()).AddToCollection(table.Columns);

                    var keycolumns = table.Columns.Where(c => c.IsKey).Select(c => c.Name).ToMergeString(",");
                    table.Key = keycolumns;
                }
                catch (Exception)
                {
                    throw;
                }
                yield return(table);

                conn.CloseConnection();
            }
        }
Example #7
0
        private static bool CheckItemsCount(System.Data.Common.DbConnection db, AppModule module, SqlCommand sqlcommand, object[] paras, object expected)
        {
            bool flag  = true;
            var  table = module.GetTable(sqlcommand.Table);

            foreach (var logickey in table.LogicKeys)
            {
                var countCommand = module.GetCommand(string.Format("{0}.{1}.CountKey_{2}", module.Name, table.Name, logickey.ColumnName.Replace(",", "_")));
                if (countCommand != null)
                {
                    countCommand.Parameters = sqlcommand.Parameters;
                    var count = DBConn.ExecuteScalar(db, countCommand, paras);
                    if (!count.ToString().Equals(expected.ToString()))
                    {
                        return(false);
                    }
                }
            }
            return(flag);
        }
Example #8
0
        public static IEnumerable <Column> GetColumns(this AppModule module, string schema, string table)
        {
            IEnumerable <Column> columns = null;
            var conn = module.OpenConnection();

            columns = GetColumns(conn, schema, table, module.SqlBuilder.GetName(table)).ToList();
            conn.CloseConnection();
            foreach (var column in columns)
            {
                var sysColumn = module.SystemColumns.FirstOrDefault(s => s.Name.Equals(column.Name, StringComparison.OrdinalIgnoreCase));
                if (sysColumn != null)
                {
                    column.IsSystem        = true;
                    column.IsReadOnly      = sysColumn.IsReadOnly;
                    column.SystemParameter = sysColumn.SystemParameter;
                }

                yield return(column);
            }
        }