Esempio n. 1
0
 private DAODataColumn CreateNewDAODataColumn(DAODataTable ddt, DataRow row)
 {
     DAODataColumn item = new DAODataColumn();
     item.Id = StringHelper.GetNewGuid();
     item.Name = row["ColumnName"].ToString();
     item.Description = item.Name;
     item.DataType = (row["DataType"] as System.Type).Name;
     item.Length = (int)row["ColumnSize"];
     item.DataTable = ddt;
     item.DisplayIndex = row.Table.Rows.IndexOf(row);
     ddt.DataColumns.Add(item);
     this.currentUnitOfWork.RegisterNew(item);
     return item;
 }
Esempio n. 2
0
 public void LoadMe(DAODataTable ddt, UnitOfWork unitOfWork)
 {
     if (ddt == null)
     {
         throw new ArgumentNullException("ddt");
     }
     if (unitOfWork == null)
     {
         throw new ArgumentNullException("unitOfWork");
     }
     this.daoDataTable = ddt;
     this.currentUnitOfWork = unitOfWork;
     this.gcDataColumn.DataSource = null;
     this.gcDataColumn.DataSource = ddt.DataColumns;
 }
Esempio n. 3
0
 private static string CreateInsertTableSQL(string[] keys, string[] fields, IList<string[]> vals, ITraceDb trace, bool canTraceAdd, DAODataTable ddt)
 {
     string str = null;
     if ((keys != null) || (keys.Length > 0))
     {
         int length = keys.Length;
         int num2 = fields.Length;
         for (int i = 0; i < length; i++)
         {
             InsertQuery query = new InsertQuery(ddt.Name);
             foreach (DAODataColumn column in ddt.DataColumns)
             {
                 object val = null;
                 if (column.IsNeedInitial)
                 {
                     val = GetInitialValue(column.InitialValue);
                     LoggingService.DebugFormatted("初始化字段:{0} 的值为:{1}", new object[] { column.Name, val });
                 }
                 else if (column.Name.ToLower() == "createdate")
                 {
                     val = DateTimeHelper.GetNow();
                 }
                 if (val != null)
                 {
                     try
                     {
                         query.Terms.Add(new UpdateTerm(column.Name, GetSqlExpression(column.DataType, val)));
                         if (canTraceAdd)
                         {
                             trace.TraceOuterAdd(ddt.Name, keys[i], column.Name, val.ToString(), "系统新增字段值记录");
                         }
                     }
                     catch (Exception exception)
                     {
                         LoggingService.ErrorFormatted("在设置表:{0}字段:{1}初始化值:{2}时出错:{3}\r\n{4}", new object[] { ddt.Name, column.Name, val, exception.Message, exception.StackTrace });
                     }
                 }
             }
             string[] strArray = vals[i];
             UpdateTerm ut = new UpdateTerm(ddt.Key, SqlExpression.String(keys[i]));
             AddUpdateTerm(query.Terms, ut);
             if (canTraceAdd)
             {
                 trace.TraceOuterAdd(ddt.Name, keys[i], "系统自动初始化数据新增记录");
             }
             if (fields != null)
             {
                 string str2 = string.Empty;
                 for (int j = 0; j < num2; j++)
                 {
                     str2 = fields[j];
                     if (ddt.Contains(str2))
                     {
                         ut = new UpdateTerm(str2, SqlExpression.String(strArray[j]));
                         AddUpdateTerm(query.Terms, ut);
                         if (canTraceAdd)
                         {
                             trace.TraceOuterAdd(ddt.Name, keys[i], str2, strArray[j], "系统新增字段值记录");
                         }
                     }
                 }
             }
             if (query.Terms.Count > 0)
             {
                 str = SqlOmRenderHelper.Instance.RenderInsert(query);
             }
         }
         return str;
     }
     log.Error("没有找到初始化记录的关键字值,不能正确初始化");
     return str;
 }
Esempio n. 4
0
 public static void Initial(SMDataSource smDS, DAODataTable ddt, string key, string[] fields, string[] vals)
 {
     List<string[]> list = new List<string[]>(1) {
         vals
     };
     Initial(smDS, ddt, new string[] { key }, fields, list);
 }
Esempio n. 5
0
 public static void Initial(SMDataSource smDS, DAODataTable ddt, string[] keys, string[] fields, IList<string[]> vals)
 {
     ITraceDb traceDB = GetTraceDB(smDS);
     bool canTraceAdd = TraceUtil.CanTraceLevel(TraceLevel.Added) && (traceDB != null);
     string str = CreateInsertTableSQL(keys, fields, vals, traceDB, canTraceAdd, ddt);
     if (!string.IsNullOrEmpty(str))
     {
         Exception exception;
         DBConnection dbcn = new DBConnection(smDS);
         dbcn.Open();
         try
         {
             Execute(dbcn, str, null);
             if (canTraceAdd)
             {
                 try
                 {
                     traceDB.SaveTraceToDb();
                 }
                 catch (Exception exception1)
                 {
                     exception = exception1;
                     log.Error("系统对新增数据进行痕记录时出错:", exception);
                 }
             }
         }
         catch (Exception exception2)
         {
             exception = exception2;
             throw new DataFormException("Initial data raise error", exception);
         }
         finally
         {
             dbcn.Close();
         }
     }
 }
Esempio n. 6
0
 public static void Initial(SMDataSource smDS, DAODataTable ddt, string[] keys)
 {
     Initial(smDS, ddt, keys, null, null);
 }
Esempio n. 7
0
 public static void Initial(SMDataSource smDS, DAODataTable ddt, string key)
 {
     Initial(smDS, ddt, new string[] { key }, null, null);
 }
Esempio n. 8
0
 public static void Initial(DAODataTable ddt, DataRow row)
 {
     foreach (DAODataColumn column in ddt.DataColumns)
     {
         if (column.IsNeedInitial)
         {
             row[column.Name] = GetInitialValue(column.InitialValue);
         }
     }
 }
Esempio n. 9
0
 public static void Initial(SMDataSource smDS, DAODataTable ddt)
 {
     Initial(smDS, ddt, null, null, new string[0]);
 }
Esempio n. 10
0
 private string GetSelectString(DAODataTable table, string keyValue)
 {
     string str3;
     string str = "select * from " + table.Name;
     if (!table.Level)
     {
         str3 = str;
         return (str3 + " where " + table.Key + "='" + keyValue + "'");
     }
     str3 = str;
     return (str3 + " where " + table.RelKey + "='" + keyValue + "' order by " + table.Key);
 }
Esempio n. 11
0
 private DataTable GetDataTable(DAODataTable DAODataTable, string keyValue, DBConnection dbcn)
 {
     DataTable dt = new DataTable(DAODataTable.Name);
     string selectString = this.GetSelectString(DAODataTable, keyValue);
     dbcn.ExecuteSql(dt, selectString);
     dt.PrimaryKey = new DataColumn[] { dt.Columns[DAODataTable.Key] };
     if (DAODataTable.Level)
     {
         dt.Columns[DAODataTable.Key].AutoIncrement = true;
         dt.Columns[DAODataTable.RelKey].DefaultValue = keyValue;
     }
     else
     {
         dt.Columns[DAODataTable.Key].DefaultValue = keyValue;
     }
     dt.ExtendedProperties.Add("selectsql", selectString);
     return dt;
 }
Esempio n. 12
0
 private void BuildLowLevelSyncSQL(StringBuilder sb, int exitRows, DataTable dtDataSource, DAODataTable daoDataTable, string relKeyValue)
 {
     int count = dtDataSource.Rows.Count;
     if (count != 0)
     {
         int num3;
         DataRow row;
         int num2 = dtDataSource.Columns.Count;
         if (exitRows == 0)
         {
             int num4;
             string str = string.Format("insert {0}({1}", daoDataTable.Name, daoDataTable.RelKey);
             string format = string.Format("values('{0}'", relKeyValue);
             for (num3 = 0; num3 < num2; num3++)
             {
                 str = str + "," + dtDataSource.Columns[num3].ColumnName;
                 format = format + ",'{" + num3.ToString() + "}'";
             }
             str = str + ")";
             if (count > 1)
             {
                 for (num3 = 0; num3 < count; num3++)
                 {
                     object[] itemArray = dtDataSource.Rows[num3].ItemArray;
                     num4 = 0;
                     while (num4 < itemArray.Length)
                     {
                         itemArray[num4] = itemArray[num4].ToString().Replace("'", "''");
                         num4++;
                     }
                     sb.Append(str).AppendFormat(format, itemArray).AppendFormat(");\n", new object[0]);
                 }
             }
             else
             {
                 row = dtDataSource.Rows[0];
                 List<string[]> list = new List<string[]>();
                 for (num3 = 0; num3 < num2; num3++)
                 {
                     string[] strArray = row[num3].ToString().Split(new char[] { '\\' });
                     for (num4 = 0; num4 < strArray.Length; num4++)
                     {
                         if (num3 == 0)
                         {
                             string[] item = new string[num2];
                             list.Add(item);
                         }
                         if (list.Count > num4)
                         {
                             //list[num4][num3] = (string[]) strArray[num4].Replace("'", "''");
                             list[num4][num3] = strArray[num4].Replace("'", "''");
                         }
                     }
                 }
                 foreach (string[] strArray2 in list)
                 {
                     sb.AppendFormat(str, new object[0]).AppendFormat(format, (object[]) strArray2).AppendFormat(");\n", new object[0]);
                 }
             }
         }
         else if (exitRows == 1)
         {
             sb.AppendFormat("update {0} set ", daoDataTable.Name);
             row = dtDataSource.Rows[0];
             string str3 = string.Empty;
             for (num3 = 0; num3 < num2; num3++)
             {
                 if (num3 > 0)
                 {
                     sb.Append(",");
                 }
                 string columnName = dtDataSource.Columns[num3].ColumnName;
                 sb.AppendFormat("{0}='{1}'", columnName, row[num3].ToString().Replace("'", "''"));
                 str3 = str3 + string.Format(" and ({0} is null or {0}='')", columnName);
             }
             sb.AppendFormat("where {0}='{1}'{2};", daoDataTable.RelKey, relKeyValue, str3);
         }
     }
 }