Beispiel #1
0
        public void ToLocalTable(STable other, List <SqlToSqlModel> sqltypemodel, bool autofieldtypechange)
        {
            foreach (var a in other.columns)
            {
                bool exist = false;
                foreach (var b in sqltypemodel)
                {
                    if (a.filedtype.name == b.typename1)
                    {
                        a.filedtype = DbFieldTypeHelper.MySqlGetFieldType(other.name, a.name, b.typename2, a.filedtype.precision, a.filedtype.scale, a.filedtype.maxlength, autofieldtypechange);
                        exist       = true;
                        break;
                    }
                }
                if (!exist)
                {
                    throw new Exception(a.filedtype.name + "不存在转化");
                }
            }
            List <DbStructure.SIndex> removeindexes = new List <SIndex>();

            for (int i = 0; i < other.indexes.Count; i++)
            {
                for (int j = i + 1; j < other.indexes.Count; j++)
                {
                    bool rowissame = true;
                    if (other.indexes[i].columns.Count == other.indexes[j].columns.Count)
                    {
                        foreach (var a in other.indexes[i].columns)
                        {
                            if (!other.indexes[j].columns.ContainsKey(a.Key))
                            {
                                rowissame = false;
                                break;
                            }
                        }
                    }
                    else
                    {
                        rowissame = false;
                    }
                    if (rowissame)
                    {
                        if (other.indexes[j].isprimarykey || other.indexes[j].isunique)
                        {
                            if (!removeindexes.Contains(other.indexes[i]))
                            {
                                removeindexes.Add(other.indexes[i]);
                            }
                        }
                        else
                        {
                            if (!removeindexes.Contains(other.indexes[j]))
                            {
                                removeindexes.Add(other.indexes[j]);
                            }
                        }
                    }
                }
            }
            foreach (var a in removeindexes)
            {
                other.indexes.Remove(a);
            }
        }