private void _ValidateObject(Data.DataObject dataObject, string invalidPropertyFormat, ref List <MessageDetail> details)
        {
            string error = dataObject.PrimaryError;

            if (!string.IsNullOrEmpty(error))
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendFormat("{0} ", _ConvertType2ObjectName(dataObject.GetType()));
                sb.AppendFormat("{0}\n", invalidPropertyFormat);
                sb.Append(error);
                details.Add(new MessageDetail(MessageType.Warning, sb.ToString(), dataObject));
            }
        }
Пример #2
0
        private string[] BuildSyncScript(string TableName, string PrimaryKey, List <Data.DataObject> DataList)
        {
            string SqlDelete = String.Format(@"Delete From {0} Where {1}=?", TableName, PrimaryKey);

            Data.DataObject bo        = DataList[0];
            string[]        Fields    = bo.FieldArray;
            string          SqlInsert = "Insert Into " + TableName + " (";
            string          txtParams = " (";

            for (int i = 0; i < Fields.Length - 1; i++)
            {
                SqlInsert += Fields[i] + ",";
                txtParams += "?,";
            }
            SqlInsert = SqlInsert.TrimEnd(',');
            txtParams = txtParams.TrimEnd(',');
            SqlInsert = SqlInsert + ") Values " + txtParams + ")";
            return(new string[] { SqlDelete, SqlInsert });
        }
Пример #3
0
        /// <summary>
        /// 从服务器同步有变化的数据到本地
        /// </summary>
        /// <param name="ChangeTableList"></param>
        /// <returns></returns>
        private async Task <bool> SyncDataFromServer(List <Data.iTableChange> ChangeTableList, SQLite.SQLiteConnection conn, string IsInitData)
        {
            foreach (Data.iTableChange itc in ChangeTableList)
            {
                object Result = await RemoteExcute(new object[] { iCommon.DeviceID, itc.TableName, itc.PrimaryKey, IsInitData });

                if (Result == null)
                {
                    continue;
                }
                List <Data.DataObject> DataList = Deserialize <Data.DataObject>(Result as byte[]);
                if (DataList == null || DataList.Count == 0)
                {
                    continue;
                }

                string          SqlDelete = String.Format(@"Delete From {0} Where {1}=?", itc.TableName, itc.PrimaryKey);
                Data.DataObject bo        = DataList[0];
                string[]        Fields    = bo.FieldArray;
                string          SqlInsert = "Insert Into " + itc.TableName + " (";
                string          txtParams = " (";
                for (int i = 0; i < Fields.Length - 1; i++)
                {
                    SqlInsert += Fields[i] + ",";
                    txtParams += "?,";
                }
                SqlInsert = SqlInsert.TrimEnd(',');
                txtParams = txtParams.TrimEnd(',');
                SqlInsert = SqlInsert + ") Values " + txtParams + ")";
                conn.BeginTransaction();
                try
                {
                    SQLite.SQLiteCommand cmdDelete = conn.CreateCommand(SqlDelete);
                    SQLite.SQLiteCommand cmdInsert = conn.CreateCommand(SqlInsert);
                    foreach (Data.DataObject data in DataList)
                    {
                        cmdDelete.ClearBindings();
                        cmdInsert.ClearBindings();
                        cmdDelete.Bind(data.GetExtValue(itc.PrimaryKey));
                        cmdDelete.ExecuteNonQuery();
                        if (data.GetExtValue("ChangeType") != "DELETE")
                        {
                            for (int d = 0; d < data.Data.Length - 1; d++)
                            {
                                cmdInsert.Bind(data.Data[d]);
                            }
                            cmdInsert.ExecuteNonQuery();
                        }
                    }
                    conn.Delete(itc);
                    conn.Insert(itc);
                    bool isSaveSuccess = await SavePadSyncLog(iCommon.DeviceID, itc.TableName, itc.LastChangeDate);

                    if (isSaveSuccess)
                    {
                        conn.Commit();
                    }
                    else
                    {
                        conn.Rollback();
                    }
                }
                catch (Exception ex)
                {
                    conn.Rollback();
                }
            }
            return(true);
        }
Пример #4
0
 public static Guid?GetCommunityIDByVirtualURL(string virtualUrl)
 {
     Data.DataObject dObj = new Data.DataObject();
     return(dObj.GetCommunityIDByVirtualURL(virtualUrl));
 }