/// <summary> /// 写入作业日志(更新操作) /// </summary> /// <param name="oldObj">旧实体对象</param> /// <param name="newObj">新实体对象</param> /// <param name="OperationType">操作类型</param> /// <param name="Status">状态</param> /// <param name="Remark">操作说明</param> /// <returns></returns> public void WriteLog <T>(T oldObj, T newObj, OperationType OperationType, string Status, string Remark = "") { IDatabase database = DataFactory.Database(); DbTransaction isOpenTrans = database.BeginTrans(); try { SysLog.SysLogId = CommonHelper.GetGuid; SysLog.ObjectId = DatabaseCommon.GetKeyFieldValue(newObj).ToString(); SysLog.LogType = CommonHelper.GetString((int)OperationType); SysLog.IPAddress = ManageProvider.Provider.Current().IPAddress; SysLog.IPAddressName = ManageProvider.Provider.Current().IPAddressName; SysLog.CompanyId = ManageProvider.Provider.Current().CompanyId; SysLog.DepartmentId = ManageProvider.Provider.Current().DepartmentId; SysLog.CreateUserId = ManageProvider.Provider.Current().UserId; SysLog.CreateUserName = ManageProvider.Provider.Current().UserName; SysLog.ModuleId = DESEncrypt.Decrypt(CookieHelper.GetCookie("ModuleId")); if (Remark == "") { SysLog.Remark = DatabaseCommon.GetClassName <T>(); } SysLog.Remark = Remark; SysLog.Status = Status; database.Insert(SysLog, isOpenTrans); //添加日志详细信息 Type objTye = typeof(T); foreach (PropertyInfo pi in objTye.GetProperties()) { object oldVal = pi.GetValue(oldObj, null); object newVal = pi.GetValue(newObj, null); if (!Equals(oldVal, newVal)) { if (oldVal != null && oldVal.ToString() != " " && oldVal.ToString() != "" && newVal != null && newVal.ToString() != " " && newVal.ToString() != "") { Base_SysLogDetail syslogdetail = new Base_SysLogDetail(); syslogdetail.SysLogDetailId = CommonHelper.GetGuid; syslogdetail.SysLogId = SysLog.SysLogId; syslogdetail.PropertyField = pi.Name; syslogdetail.PropertyName = DatabaseCommon.GetFieldText(pi); syslogdetail.NewValue = "" + newVal + ""; syslogdetail.OldValue = "" + oldVal + ""; database.Insert(syslogdetail, isOpenTrans); } } } database.Commit(); } catch { database.Rollback(); } }
/// <summary> /// 写入作业日志(删除操作) /// </summary> /// <param name="oldObj">旧实体对象</param> /// <param name="KeyValue">对象主键</param> /// <param name="Status">状态</param> /// <param name="Remark">操作说明</param> public void WriteLog <T>(string[] KeyValue, string Status, string Remark = "") where T : new() { IDatabase database = DataFactory.Database(); DbTransaction isOpenTrans = database.BeginTrans(); try { foreach (var item in KeyValue) { T Oldentity = database.FindEntity <T>(item.ToString()); SysLog.SysLogId = CommonHelper.GetGuid; SysLog.ObjectId = item; SysLog.LogType = CommonHelper.GetString((int)OperationType.Delete); SysLog.IPAddress = ManageProvider.Provider.Current().IPAddress; SysLog.IPAddressName = ManageProvider.Provider.Current().IPAddressName; SysLog.CompanyId = ManageProvider.Provider.Current().CompanyId; SysLog.DepartmentId = ManageProvider.Provider.Current().DepartmentId; SysLog.CreateUserId = ManageProvider.Provider.Current().UserId; SysLog.CreateUserName = ManageProvider.Provider.Current().UserName; SysLog.ModuleId = DESEncrypt.Decrypt(CookieHelper.GetCookie("ModuleId")); if (Remark == "") { SysLog.Remark = DatabaseCommon.GetClassName <T>(); } SysLog.Remark = Remark; SysLog.Status = Status; database.Insert(SysLog, isOpenTrans); //添加日志详细信息 Type objTye = typeof(T); foreach (PropertyInfo pi in objTye.GetProperties()) { object value = pi.GetValue(Oldentity, null); if (value != null && value.ToString() != " " && value.ToString() != "") { Base_SysLogDetail syslogdetail = new Base_SysLogDetail(); syslogdetail.SysLogDetailId = CommonHelper.GetGuid; syslogdetail.SysLogId = SysLog.SysLogId; syslogdetail.PropertyField = pi.Name; syslogdetail.PropertyName = DatabaseCommon.GetFieldText(pi); syslogdetail.NewValue = "" + value + ""; database.Insert(syslogdetail, isOpenTrans); } } } database.Commit(); } catch { database.Rollback(); database.Close(); throw; } }
/// <summary> /// 写入作业日志(新增操作) /// </summary> /// <param name="entity">实体对象</param> /// <param name="OperationType">操作类型</param> /// <param name="Status">状态</param> /// <param name="Remark">操作说明</param> /// <returns></returns> public void WriteLog <T>(T entity, OperationType OperationType, int Status, string Remark = "") { IDatabase database = DataFactory.Database(); DbTransaction isOpenTrans = database.BeginTrans(); try { SysLog.ObjectId = DatabaseCommon.GetKeyFieldValue(entity).ToString(); SysLog.LogType = (int)OperationType; SysLog.IPAddress = ManageProvider.Provider.Current().IPAddress; SysLog.IPAddressName = ManageProvider.Provider.Current().IPAddressName; SysLog.CreateUserId = ManageProvider.Provider.Current().UserId; SysLog.CreateUserName = ManageProvider.Provider.Current().Account; SysLog.CreateTime = DateTime.Now; SysLog.ModuleId = int.Parse(DESEncrypt.Decrypt(CookieHelper.GetCookie("ModuleId"))); if (Remark == "") { SysLog.Remark = DatabaseCommon.GetClassName <T>(); } else { SysLog.Remark = Remark; } SysLog.Status = Status; int newid = database.Insert(SysLog, isOpenTrans); //添加日志详细信息 Type objTye = typeof(T); StringBuilder sbNewValue = new StringBuilder(); foreach (PropertyInfo pi in objTye.GetProperties()) { object value = pi.GetValue(entity, null); if (value != null && value.ToString() != " " && value.ToString() != "") { sbNewValue.Append(pi.Name + ":" + value); } } SysLogDetail syslogdetail = new SysLogDetail(); syslogdetail.SysLogId = newid; syslogdetail.PropertyField = ""; syslogdetail.PropertyName = ""; syslogdetail.NewValue = sbNewValue.ToString(); syslogdetail.CreateTime = DateTime.Now; database.Insert(syslogdetail, isOpenTrans); database.Commit(); } catch (Exception e) { string abc = e.Message; database.Rollback(); } }
/// <summary> /// 根据条件查询出一个集合 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="condition"></param> /// <returns></returns> public IEnumerable <T> FindList <T>(Expression <Func <T, bool> > condition) where T : class, new() { LambdaExpConditions <T> lambda = new LambdaExpConditions <T>(); lambda.AddAndWhere(condition); string where = lambda.Where(); string sql = DatabaseCommon.SelectSql <T>(where).ToString(); using (var dbConnection = Connection) { return(dbConnection.Query <T>(sql).ToList()); } }
/// <summary> /// 写入作业日志(新增操作) /// </summary> /// <param name="entity">实体对象</param> /// <param name="operationType">操作类型</param> /// <param name="status">状态</param> /// <param name="remark">操作说明</param> /// <returns></returns> public void WriteLog <T>(T entity, OperationType operationType, string status, string remark = "") { IDatabase database = DataFactory.Database(); DbTransaction isOpenTrans = database.BeginTrans(); try { SysLog.SysLogId = CommonHelper.GetGuid; SysLog.ObjectId = DatabaseCommon.GetKeyFieldValue(entity).ToString(); SysLog.LogType = CommonHelper.GetString((int)operationType); SysLog.IPAddress = ManageProvider.Provider.Current().IPAddress; SysLog.IPAddressName = ManageProvider.Provider.Current().IPAddressName; SysLog.CompanyId = ManageProvider.Provider.Current().CompanyId; SysLog.DepartmentId = ManageProvider.Provider.Current().DepartmentId; SysLog.CreateUserId = ManageProvider.Provider.Current().UserId; SysLog.CreateUserName = ManageProvider.Provider.Current().UserName; SysLog.ModuleId = DESEncrypt.Decrypt(WebHelper.GetCookie("ModuleId")); SysLog.CreateDate = DateTime.Now; if (remark == "") { SysLog.Remark = DatabaseCommon.GetClassName <T>(); } SysLog.Remark = remark; SysLog.Status = status; database.Insert(SysLog, isOpenTrans); //添加日志详细信息 Type objTye = typeof(T); foreach (PropertyInfo pi in objTye.GetProperties()) { object value = pi.GetValue(entity, null); if (value == null || value.ToString() == " " || value.ToString() == "") { continue; } BaseSysLogDetail syslogdetail = new BaseSysLogDetail { SysLogDetailId = CommonHelper.GetGuid, SysLogId = SysLog.SysLogId, PropertyField = pi.Name, PropertyName = DatabaseCommon.GetFieldText(pi), NewValue = "" + value + "" }; database.Insert(syslogdetail, isOpenTrans); } database.Commit(); } catch { database.Rollback(); } }
/// <summary> /// 根据条件查询一个实体 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="condition"></param> /// <returns></returns> public T FindEntity <T>(Expression <Func <T, bool> > condition) where T : class, new() { LambdaExpConditions <T> lambda = new LambdaExpConditions <T>(); lambda.AddAndWhere(condition); string where = lambda.Where(); string sql = DatabaseCommon.SelectSql <T>(where).ToString(); using (var dbConnection = Connection) { var data = dbConnection.Query <T>(sql); return(data.FirstOrDefault()); } }
/// <summary> /// 批量删除 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entities"></param> /// <returns></returns> public int Delete <T>(List <T> entities) where T : class { int res = 0; if (entities.Count > 0) { string sql = DatabaseCommon.DeleteSql <T>(entities.FirstOrDefault()).ToString(); using (var connection = Connection) { res = connection.Execute(sql, entities); } } return(res); }
/// <summary> /// lambdas删除 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="condition"></param> public void Delete <T>(Expression <Func <T, bool> > condition) where T : class, new() { var lambda = new LambdaExpConditions <T>(); lambda.AddAndWhere(condition); string where = lambda.Where(); string sql = DatabaseCommon.DeleteSql <T>(where).ToString(); using (var db = Connection) { db.Execute(sql); } }
/// <summary> /// 数据条数 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="condition"></param> /// <returns></returns> public int Count <T>(Expression <Func <T, bool> > condition) where T : class, new() { var lambda = new LambdaExpConditions <T>(); lambda.AddAndWhere(condition); string where = lambda.Where(); string sql = DatabaseCommon.SelectSql <T>(where).ToString(); using (var db = Connection) { return(db.Execute(sql)); } }
/// <summary> /// 实体插入 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entities"></param> /// <returns></returns> public int Insert <T>(List <T> entities) where T : class { int res = 0; if (entities.Count > 0) { string sql = DatabaseCommon.InsertSql <T>(entities.FirstOrDefault()).ToString(); //DbParameter[] parameter = DatabaseCommon.GetParameter<T>(entity); using (var connection = Connection) { res = connection.Execute(sql, entities); } } return(res); }
/// <summary> /// 根据条件获取分页数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="condition">条件</param> /// <param name="orderField">排序字段,多个用英文逗号隔开,类似:Id Asc,Name Desc</param> /// <param name="isAsc">是否升序</param> /// <param name="pageSize">每页条数</param> /// <param name="pageIndex">索引</param> /// <param name="total">总记录</param> /// <returns></returns> public IEnumerable <T> FindList <T>(Expression <Func <T, bool> > condition, string orderField, bool isAsc, int pageSize, int pageIndex, out int total) where T : class, new() { StringBuilder sb = new StringBuilder(); if (pageIndex == 0) { pageIndex = 1; } int num = (pageIndex - 1) * pageSize; int num1 = (pageIndex) * pageSize; string orderBy = ""; LambdaExpConditions <T> lambda = new LambdaExpConditions <T>(); lambda.AddAndWhere(condition); string where = lambda.Where(); //表名 string table = EntityAttributeHelper.GetEntityTable <T>(); string strSql = DatabaseCommon.SelectSql <T>(where, true).ToString(); if (!string.IsNullOrEmpty(orderField)) { if (orderField.ToUpper().IndexOf("ASC", StringComparison.Ordinal) + orderField.ToUpper().IndexOf("DESC", StringComparison.Ordinal) > 0) { orderBy = "Order By " + orderField; } else { orderBy = "Order By " + orderField + " " + (isAsc ? "ASC" : "DESC"); } } else { orderBy = "Order By (Select 0)"; } sb.Append("Select * From (Select ROW_NUMBER() Over (" + orderBy + ")"); sb.Append(" As rowNum, * From (" + strSql + ") As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + ""); using (var dbConnection = Connection) { string selectCountSql = "Select Count(*) From " + table + " WHERE 1 = 1"; total = (int)dbConnection.ExecuteScalar(selectCountSql); IEnumerable <T> data = dbConnection.Query <T>(sb.ToString()).ToList(); return(data); } }
public static void Configurar(IServiceCollection services, IConfiguration configuration) { const string connectionName = "DefaultConnection"; var param = configuration.GetConnectionString(connectionName); var connectionString = DatabaseCommon.ParseConnectionString(param); services.AddHealthChecksUI() .AddPostgreSqlStorage(connectionString); services.AddHealthChecks() .AddNpgSql(connectionString) .AddDbContextCheck <ApiContext>(); services.AddDbContext <ApiContext>(options => options.UseNpgsql(connectionString)); }
/// <summary> /// 根据条件以及指定属性名称更新 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="modelModifyProps"></param> /// <param name="condition"></param> /// <returns></returns> public int Update <T>(T modelModifyProps, Expression <Func <T, bool> > condition) where T : class, new() { int res = 0; LambdaExpConditions <T> lambda = new LambdaExpConditions <T>(); lambda.AddAndWhere(condition); string where = lambda.Where(); string sql = DatabaseCommon.UpdateSql <T>(modelModifyProps, "", where).ToString(); //DbParameter[] parameter = DatabaseCommon.GetParameter<T>(modelModifyProps); res = ExecuteBySql(sql, modelModifyProps); return(res); }
/// <summary> /// 根据条件删除 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="condition"></param> /// <returns></returns> public int Delete <T>(Expression <Func <T, bool> > condition) where T : class, new() { int res = 0; LambdaExpConditions <T> lambda = new LambdaExpConditions <T>(); lambda.AddAndWhere(condition); string where = lambda.Where(); string sql = DatabaseCommon.DeleteSql <T>(where).ToString(); using (var connection = Connection) { res = connection.Execute(sql); } return(res); }
//查询where条件的列表数据 public IEnumerable <T> FindList <T>(string where, string colNameSort) where T : class, new() { Type type = typeof(T); StringBuilder strSql = new StringBuilder(); strSql.AppendFormat("SELECT * FROM {0} WHERE 1=1 ", type.GetMappingAttributeName()); if (!string.IsNullOrEmpty(where)) { strSql.Append(where); } if (!string.IsNullOrEmpty(colNameSort)) { strSql.AppendFormat(" Order BY {0}", colNameSort); } return(ConvertExtension.IDataReaderToList <T>(DatabaseCommon.ExecuteDataReader(this.dbConnection, strSql.ToString(), null))); }
/// <summary> /// 实体插入 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity"></param> /// <returns></returns> public int Insert <T>(T entity) where T : class { int res = 0; if (DbTransaction == null) { string sql = DatabaseCommon.InsertSql <T>(entity).ToString(); //DbParameter[] parameter = DatabaseCommon.GetParameter<T>(entity); using (var connection = Connection) { res = connection.Execute(sql, entity); } } else { string sql = DatabaseCommon.InsertSql <T>(entity).ToString(); DbParameter[] parameter = DatabaseCommon.GetParameter <T>(entity); res = DbTransaction.Connection.Execute(sql, parameter, DbTransaction); } return(res); }
/// <summary> /// 更新 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="connection"></param> /// <param name="entity"></param> /// <param name="transaction"></param> /// <param name="timeout"></param> /// <returns></returns> public int Update <T>(IDbConnection connection, T entity, IDbTransaction transaction = null, int?timeout = Timeout) where T : class { int res = 0; this.Logger(this.GetType(), "更新-Update", () => { string sql = DatabaseCommon.UpdateSql <T>(entity).ToString(); res = connection.Execute(sql, entity, transaction, timeout); }, e => { if (transaction != null) { transaction.Rollback(); } connection.Close(); connection.Dispose(); }, () => { }); return(res); }
/// <summary> /// 根据主键查询一个实体 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="keyValue"></param> /// <returns></returns> public T FindEntity <T>(object keyValue) where T : class, new() { Type type = keyValue.GetType(); string key = EntityAttributeHelper.GetEntityKey <T>(); string where = " WHERE 1 = 1"; if (type == typeof(int)) { where = $" WHERE {key} = {keyValue}"; } else { where = $" WHERE {key} = '{keyValue}'"; } string sql = DatabaseCommon.SelectSql <T>(where).ToString(); using (var dbConnection = Connection) { var data = dbConnection.Query <T>(sql); return(data.FirstOrDefault()); } }
/// <summary> /// 获取IQueryable /// </summary> /// <typeparam name="T"></typeparam> /// <param name="connection"></param> /// <param name="transaction"></param> /// <param name="timeout"></param> /// <returns></returns> public IQueryable <T> IQueryable <T>(IDbConnection connection, IDbTransaction transaction = null, int?timeout = Timeout) where T : class { IQueryable <T> res = null; this.Logger(this.GetType(), "获取IQueryable-IQueryable", () => { string sql = DatabaseCommon.SelectSql <T>("").ToString(); res = (IQueryable <T>)connection.Query <T>(sql, null, transaction, true, timeout); }, e => { if (transaction != null) { transaction.Rollback(); } connection.Close(); connection.Dispose(); }, () => { }); return(res); }
/// <summary> /// 得到一个集合 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="connection"></param> /// <param name="transaction"></param> /// <param name="timeout"></param> /// <returns></returns> public IEnumerable <T> FindList <T>(IDbConnection connection, IDbTransaction transaction = null, int?timeout = Timeout) where T : class { IEnumerable <T> res = null; this.Logger(this.GetType(), "得到一个集合-FindList", () => { string sql = DatabaseCommon.SelectSql <T>("", true).ToString(); res = connection.Query <T>(sql, null, transaction, true, timeout); }, e => { if (transaction != null) { transaction.Rollback(); } connection.Close(); connection.Dispose(); }, () => { }); return(res); }
/// <summary> /// 删除 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public int Delete <T>(IDbConnection connection, IDbTransaction transaction = null, int?timeout = Timeout) where T : class { int res = 0; this.Logger(this.GetType(), "删除-Delete", () => { string tableName = EntityAttributeHelper.GetEntityTable <T>(); string sql = DatabaseCommon.DeleteSql(tableName).ToString(); res = connection.Execute(sql, null, transaction, timeout); }, e => { if (transaction != null) { transaction.Rollback(); } connection.Close(); connection.Dispose(); }, () => { }); return(res); }
/// <summary> /// 更新一条数据 /// </summary> /// <param name="entity">实体对象</param> /// <returns></returns> public int Update <T>(T entity) where T : class { int res = 0; if (SqlTransaction == null) { string sql = DatabaseCommon.UpdateSql <T>(entity).ToString(); DbParameter[] parameter = DatabaseCommon.GetParameter <T>(entity); using (var conn = Connection) { res = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql, DatabaseCommon.DbParameterToSqlParameter(parameter)); } } else { string sql = DatabaseCommon.UpdateSql <T>(entity).ToString(); DbParameter[] parameter = DatabaseCommon.GetParameter <T>(entity); res = SqlHelper.ExecuteNonQuery(SqlTransaction, CommandType.Text, sql, DatabaseCommon.DbParameterToSqlParameter(parameter)); } return(res); }
/// <summary> /// 根据属性名称删除 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="propertyValue"></param> /// <param name="propertyName"></param> /// <returns></returns> public int Delete <T>(object propertyValue, string propertyName) where T : class { int res = 0; Type type = propertyValue.GetType(); string where = " WHERE 1 = 1"; if (type == typeof(int)) { where = $" WHERE {propertyName} = {propertyValue}"; } else { where = $" WHERE {propertyName} = '{propertyValue}'"; } string sql = DatabaseCommon.DeleteSql <T>(where).ToString(); using (var connection = Connection) { res = connection.Execute(sql); } return(res); }
/// <summary> /// 根据条件更新 /// </summary> /// <param name="modelModifyProps">要修改的列及修改后列的值集合</param> /// <param name="condition">修改的条件</param> /// <returns>返回受影响行数</returns> public int Update <T>(T modelModifyProps, Expression <Func <T, bool> > condition) where T : class, new() { int res = 0; LambdaExpConditions <T> lambda = new LambdaExpConditions <T>(); lambda.AddAndWhere(condition); string where = lambda.Where(); string sql = DatabaseCommon.UpdateSql <T>(modelModifyProps, "", where).ToString(); if (SqlTransaction == null) { using (var conn = Connection) { res = SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sql); } } else { res = SqlHelper.ExecuteNonQuery(SqlTransaction, CommandType.Text, sql); //res = this.Commit(); } return(res); }
public int Update <T>(T entity) where T : class { return(ExecuteBySql(DatabaseCommon.UpdateSql <T>(entity).ToString(), DatabaseCommon.GetParameter <T>(entity))); }
/// <summary> /// Initializes a new instance of the <see cref="Cursor"/> class. /// </summary> /// <param name="isamSession">The session.</param> /// <param name="database">The database.</param> /// <param name="tableName">Name of the table.</param> /// <param name="grbit">The grbit.</param> internal Cursor(IsamSession isamSession, IsamDatabase database, string tableName, OpenTableGrbit grbit) { lock (isamSession) { this.isamSession = isamSession; this.database = database; this.tableName = tableName; Api.JetOpenTable(isamSession.Sesid, database.Dbid, tableName, null, 0, grbit, out this.tableid); this.cleanup = true; this.record = new ColumnAccessor(this, isamSession, this.tableid, RetrieveColumnGrbit.None); this.editRecord = new ColumnAccessor(this, isamSession, this.tableid, RetrieveColumnGrbit.RetrieveCopy); this.indexRecord = new ColumnAccessor(this, isamSession, this.tableid, RetrieveColumnGrbit.RetrieveFromIndex); this.MoveBeforeFirst(); } }
public int Delete <T>() where T : class { return(ExecuteBySql(DatabaseCommon.DeleteSql(EntityAttribute.GetEntityTable <T>()).ToString())); }
/// <summary> /// 实体插入(dapper)不作实现 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity"></param> /// <returns></returns> public int Insert<T>(T entity) where T : class { return ExecuteBySql(DatabaseCommon.InsertSql<T>(entity).ToString(), DatabaseCommon.GetParameter<T>(entity)); }
/// <summary> /// Initializes a new instance of the <see cref="Cursor"/> class. /// </summary> /// <param name="isamSession">The session.</param> /// <param name="database">The database.</param> /// <param name="tableName">Name of the table.</param> /// <param name="tableid">The tableid.</param> /// <param name="inInsertMode">if set to <c>true</c> [in insert mode].</param> internal Cursor( IsamSession isamSession, TemporaryDatabase database, string tableName, JET_TABLEID tableid, bool inInsertMode) { lock (isamSession) { this.isamSession = isamSession; this.database = database; this.tableName = tableName; this.tableid = tableid; this.cleanup = true; this.record = new ColumnAccessor(this, isamSession, tableid, RetrieveColumnGrbit.None); this.editRecord = new ColumnAccessor(this, isamSession, tableid, RetrieveColumnGrbit.RetrieveCopy); this.indexRecord = new ColumnAccessor(this, isamSession, tableid, RetrieveColumnGrbit.RetrieveFromIndex); this.isSort = database.Tables[tableName].Type == TableType.Sort; this.isSortOrPreSort = database.Tables[tableName].Type == TableType.Sort || database.Tables[tableName].Type == TableType.PreSortTemporary; this.isTempTable = database.Tables[tableName].Type == TableType.Sort || database.Tables[tableName].Type == TableType.PreSortTemporary || database.Tables[tableName].Type == TableType.Temporary; this.inInsertMode = this.isSortOrPreSort && inInsertMode; this.inRetrieveMode = this.isSort && !inInsertMode; this.onBeforeFirst = this.isSort && !inInsertMode; if (!(this.isSort || (this.isSortOrPreSort && inInsertMode))) { this.MoveBeforeFirst(); } } }
public int UpdateNew <T>(T entity, bool isBatch = false) where T : class { return(ExecuteBySql(DatabaseCommon.UpdateSql <T>(entity).ToString(), DatabaseCommon.GetParameter <T>(entity))); }
/// <summary> /// 解析XML字符串格式 /// </summary> /// <param name="Xml"></param> /// <param name="arrSql">返回SQL</param> /// <param name="arrParam">返回参数化</param> /// <param name="Action">操作动作</param> private void AnalysisXml(string Xml, out ArrayList arrSql, out ArrayList arrParam, out string Action) { Xml = GZipHelper.Uncompress(Xml); ArrayList _arrSql = new ArrayList(); ArrayList _arrParam = new ArrayList(); string _Action = "-1"; try { XmlDocument xd = new XmlDocument(); xd.LoadXml(Xml); foreach (XmlNode node in xd.ChildNodes) { if (node.Name.Trim() == "Request") { foreach (XmlNode subnode in node.ChildNodes) { if (subnode.Name.Trim() == "data") { //根据接口代码获取对象 Base_InterfaceManage interfacemanage = Repository().FindEntity("Code", subnode.Attributes["code"].Value); if (interfacemanage.InterfaceId != null) { _Action = interfacemanage.Action; //动作类型 string Constraint = interfacemanage.Constraints; //约束达式 foreach (XmlNode node_data in subnode.ChildNodes) { if (node_data.Name.Trim() == "no") { string pkName; string pkVal; switch (_Action) { case "Insert": //新增 Hashtable ht_add = this.XmlNodeToHashtable(node_data); _arrSql.Add(DatabaseCommon.InsertSql(Constraint.Trim(), ht_add)); _arrParam.Add(DatabaseCommon.GetParameter(ht_add)); break; case "Update": //修改 Hashtable ht_edit = this.XmlNodeToHashtable(node_data, out pkName, out pkVal); _arrSql.Add(new StringBuilder(Constraint.Trim())); _arrParam.Add(DatabaseCommon.GetParameter(ht_edit)); break; case "Delete": //删除 Hashtable ht_Delete = this.XmlNodeToHashtable(node_data, out pkName, out pkVal); _arrSql.Add(DatabaseCommon.DeleteSql(Constraint.Trim(), pkName)); _arrParam.Add(DbFactory.CreateDbParameter("@" + pkName, pkVal)); break; case "Select": //查询 Hashtable ht_Param = this.XmlNodeToHashtable(node_data); _arrSql.Add(Constraint.Trim()); _arrParam.Add(DatabaseCommon.GetParameter(ht_Param)); break; case "Procedure": //存储过程 Hashtable ExecuteByProc = this.XmlNodeToHashtable(node_data); _arrSql.Add(Constraint.Trim()); _arrParam.Add(ExecuteByProc); break; case "DataTableProc": //存储过程-DataTableProc Hashtable DataTableProc = this.XmlNodeToHashtable(node_data); _arrSql.Add(Constraint.Trim()); _arrParam.Add(DataTableProc); break; case "DataSetProc": //存储过程-DataSetProc Hashtable DataSetProc = this.XmlNodeToHashtable(node_data); _arrSql.Add(Constraint.Trim()); _arrParam.Add(DataSetProc); break; case "-1": //异常信息 break; default: break; } } } } else { log.Error(Xml.ToString() + "\r\n接口不存在\r\n"); } } } break; } } } catch (Exception e) { log.Error(Xml.ToString() + "\r\n" + e.Message + "\r\n"); } finally { arrSql = _arrSql; arrParam = _arrParam; Action = _Action; } }
/// <summary> /// Processes the nodes in the given stream until the first on-node object is reached. /// </summary> /// <param name="source">The source stream.</param> /// <param name="path">The based path of the db.</param> /// <param name="maxZoom">The maximum zoom.</param> /// <param name="tile">The tile being split.</param> /// <param name="nonEmptyTiles">The subtiles that have data in them.</param> /// <param name="hasNext">A flag indicating if there is still more data.</param> /// <param name="compressed">A flag to allow compression of target files.</param> /// <returns>The indexed node id's with a masked zoom.</returns> public static Index Process(OsmStreamSource source, string path, uint maxZoom, Tile tile, out List <Tile> nonEmptyTiles, out bool hasNext, bool compressed = false) { try { // build the set of possible subtiles. var subtiles = new Dictionary <ulong, Stream>(); foreach (var subTile in tile.GetSubtilesAt(tile.Zoom + 2)) { subtiles.Add(subTile.LocalId, null); } // go over all nodes. var nodeIndex = new Index(); hasNext = false; while (source.MoveNext()) { var current = source.Current(); if (current.Type != OsmGeoType.Node) { hasNext = true; break; } // calculate tile. var n = (current as Node); var nodeTile = Tiles.Tile.WorldToTileIndex(n.Latitude.Value, n.Longitude.Value, tile.Zoom + 2); // is tile a subtile. if (!subtiles.TryGetValue(nodeTile.LocalId, out var stream)) { continue; } // initialize stream if needed. if (stream == null) { stream = DatabaseCommon.CreateTile(path, OsmGeoType.Node, nodeTile, compressed); subtiles[nodeTile.LocalId] = stream; } // write node. stream.Append(n); // add node to index. nodeIndex.Add(n.Id.Value, nodeTile.BuildMask2()); } // flush/dispose all subtile streams. // keep all non-empty tiles. nonEmptyTiles = new List <Tile>(); foreach (var subtile in subtiles) { if (subtile.Value == null) { continue; } subtile.Value.Flush(); subtile.Value.Dispose(); if (tile.Zoom + 2 < maxZoom) { nonEmptyTiles.Add(Tile.FromLocalId(tile.Zoom + 2, subtile.Key)); } } return(nodeIndex); } catch (Exception ex) { Console.WriteLine($"Unhandled exception in {nameof(NodeProcessor)}.{nameof(Process)}: {ex}"); throw; } }