/// <summary> /// 更新最大Id记录 /// </summary> /// <param name="maxId">数据源中当前最大主键值</param> private void UpdateMaxId(string maxId) { var maxBll = new OracleTableMaxIdBll(); var maxModel = new OracleTableMaxId { MaxId = maxId, TableName = OracleTableName }; bool success; if (maxBll.Exists($"TableName='{OracleTableName}'")) { success = maxBll.Update(maxModel); } else { success = maxBll.Insert(maxModel).Id > 0; } if (success) { // 更新缓存 CacheManager.MaxIdCache.Add(maxModel); } }
protected override IEnumerable <VHISPLANINFO> GetDataFromSourdeDb(OracleTableMaxId maxId) { var type = typeof(VHISPLANINFO); var specialColumn = "MOBILENUMBER4"; var selectColumns = string.Join(",", type.GetProperties().Select(p => p.Name)) .Replace(specialColumn, $"ROWNUM AS {specialColumn}"); var condition = maxId == null ? string.Empty : $"WHERE {specialColumn}>{maxId.MaxId}"; var sql = $"SELECT * FROM (SELECT {selectColumns} FROM {nameof(VHISPLANINFO)}) {condition}"; return(OracleBaseBll.QueryBySql(sql)); }
/// <summary> /// 从数据源中获取新增的数据,默认以主键Id大于缓存的最大Id为查询条件 /// 若子类需要以其它条件查询数据则可重写此方法 /// </summary> /// <param name="maxId">包含上次查询的最大Id的<see cref="Guoli.Model.OracleTableMaxId"></see>实体对象/></param> /// <returns>查询到的新增数据集合</returns> protected virtual IEnumerable <TOracle> GetDataFromSourdeDb(OracleTableMaxId maxId) { var condition = string.Empty; if (maxId != null) { condition = $"to_number({OracleTablePrimaryKeyName})>'{maxId.MaxId}'"; } return(OracleBaseBll.QueryList(condition)); }