public void CanByDefaultDeserialiseOldVersionOfObjectIntoNewVersionOfObject() { using (FileStream stream = new FileStream(FilePathToSerializedOldVersion, FileMode.Open, FileAccess.Read)) { VersionedSimpleObject deserialized = (VersionedSimpleObject)NewFormatter.Deserialize(stream); AssertAreEquivalent(ExampleVersionedSimpleObject, deserialized); } }
private VersionedSimpleObject GetExistedObject(T obj) { WhereSqlClauseBuilder keyBuilder = ORMapping.GetWhereSqlClauseBuilderByPrimaryKey(obj, this.GetMappingInfo()); string sql = string.Format("SELECT TOP 1 {0} FROM {1} WHERE {2} ORDER BY VersionStartTime DESC", string.Join(",", ORMapping.GetSelectFieldsName(this.GetMappingInfo(), "Data")), this.GetMappingInfo().TableName, keyBuilder.ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0]; VersionedSimpleObject result = null; if (table.Rows.Count > 0) { result = this.CreateSimpleObject(); ORMapping.DataRowToObject(table.Rows[0], result); } return(result); }
/// <summary> /// 合并现有对象信息 /// </summary> /// <param name="obj">对其进行更新的<typeparamref name="T"/>对象。</param> public void MergeExistsObjectInfo(T obj) { if (SCActionContext.Current.OriginalObject != null && SCActionContext.Current.OriginalObject.SchemaType == obj.SchemaType && SCActionContext.Current.OriginalObject.ID == obj.ID) { obj.Creator = SCActionContext.Current.OriginalObject.Creator; obj.CreateDate = SCActionContext.Current.OriginalObject.CreateDate; obj.VersionStartTime = SCActionContext.Current.OriginalObject.VersionStartTime; } else { VersionedSimpleObject existedInfo = this.GetExistedObject(obj); if (existedInfo != null) { obj.CreateDate = existedInfo.CreateDate; obj.Creator = existedInfo.Creator; obj.VersionStartTime = existedInfo.VersionStartTime; } } }