コード例 #1
0
        /// <summary>检查数据表架构,不受反向工程启用开关限制</summary>
        public void CheckTables()
        {
            WriteLog("开始检查连接[{0}/{1}]的数据库架构……", ConnName, DbType);

            var sw = new Stopwatch();

            sw.Start();

            try
            {
                var list = EntityFactory.GetTables(ConnName);
                if (list != null && list.Count > 0)
                {
                    // 全都标为已初始化的
                    foreach (var item in list)
                    {
                        if (!HasCheckTables.Contains(item.Name))
                        {
                            HasCheckTables.Add(item.Name);
                        }
                    }

                    // 过滤掉被排除的表名
                    if (NegativeExclude.Count > 0)
                    {
                        for (int i = list.Count - 1; i >= 0; i--)
                        {
                            if (NegativeExclude.Contains(list[i].Name))
                            {
                                list.RemoveAt(i);
                            }
                        }
                    }
                    // 过滤掉视图
                    list.RemoveAll(dt => dt.IsView);
                    if (list != null && list.Count > 0)
                    {
                        WriteLog(ConnName + "待检查表架构的实体个数:" + list.Count);

                        SetTables(list.ToArray());
                    }
                }
            }
            finally
            {
                sw.Stop();

                WriteLog("检查连接[{0}/{1}]的数据库架构耗时{2}", ConnName, DbType, sw.Elapsed);
            }
        }
コード例 #2
0
ファイル: DAL.cs プロジェクト: EagleSmith/X
        /// <summary>反向工程。检查所有采用当前连接的实体类的数据表架构</summary>
        private void SetTables()
        {
            if (!Setting.Current.Negative.Enable || NegativeExclude.Contains(ConnName))
            {
                return;
            }

            // NegativeCheckOnly设置为true时,使用异步方式检查,因为上级的意思是不大关心数据库架构
            if (!Setting.Current.Negative.CheckOnly)
            {
                CheckTables();
            }
            else
            {
                Task.Factory.StartNew(CheckTables);
            }
        }
コード例 #3
0
        /// <summary>反向工程。检查所有采用当前连接的实体类的数据表架构</summary>
        private void SetTables()
        {
            if (!NegativeEnable || NegativeExclude.Contains(ConnName))
            {
                return;
            }

            // NegativeCheckOnly设置为true时,使用异步方式检查,因为上级的意思是不大关心数据库架构
            if (!NegativeCheckOnly)
            {
                CheckTables();
            }
            else
            {
                ThreadPoolX.QueueUserWorkItem(CheckTables);
            }
        }
コード例 #4
0
ファイル: DAL.cs プロジェクト: EagleSmith/X
        /// <summary>检查数据表架构,不受反向工程启用开关限制,仅检查未经过常规检查的表</summary>
        public void CheckTables()
        {
            WriteLog("开始检查连接[{0}/{1}]的数据库架构……", ConnName, DbType);

            var sw = new Stopwatch();

            sw.Start();

            try
            {
                var list = EntityFactory.GetTables(ConnName);
                if (list != null && list.Count > 0)
                {
                    // 移除所有已初始化的
                    list.RemoveAll(dt => CheckAndAdd(dt.TableName));

                    // 过滤掉被排除的表名
                    list.RemoveAll(dt => NegativeExclude.Contains(dt.TableName));

                    // 过滤掉视图
                    list.RemoveAll(dt => dt.IsView);

                    if (list != null && list.Count > 0)
                    {
                        WriteLog(ConnName + "待检查表架构的实体个数:" + list.Count);

                        SetTables(null, list.ToArray());
                    }
                }
            }
            finally
            {
                sw.Stop();

                WriteLog("检查连接[{0}/{1}]的数据库架构耗时{2:n0}ms", ConnName, DbType, sw.Elapsed.TotalMilliseconds);
            }
        }