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)); } }
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 }); }
/// <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); }
public static Guid?GetCommunityIDByVirtualURL(string virtualUrl) { Data.DataObject dObj = new Data.DataObject(); return(dObj.GetCommunityIDByVirtualURL(virtualUrl)); }