Beispiel #1
0
        /// <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() != "&nbsp;" && oldVal.ToString() != "" && newVal != null &&
                            newVal.ToString() != "&nbsp;" && 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();
            }
        }
Beispiel #2
0
        /// <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() != "&nbsp;" && 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() != "&nbsp;" && 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();
            }
        }
Beispiel #4
0
        /// <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());
            }
        }
Beispiel #5
0
        /// <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() == "&nbsp;" || 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();
            }
        }
Beispiel #6
0
        /// <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());
            }
        }
Beispiel #7
0
        /// <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);
        }
Beispiel #8
0
        /// <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);
            }
        }
Beispiel #9
0
        /// <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));
            }
        }
Beispiel #10
0
        /// <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);
        }
Beispiel #11
0
        /// <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));
        }
Beispiel #13
0
        /// <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);
        }
Beispiel #14
0
        /// <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);
        }
Beispiel #15
0
        //查询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)));
        }
Beispiel #16
0
        /// <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);
        }
Beispiel #17
0
        /// <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);
        }
Beispiel #18
0
        /// <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());
            }
        }
Beispiel #19
0
        /// <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);
        }
Beispiel #20
0
        /// <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);
        }
Beispiel #21
0
        /// <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);
        }
Beispiel #22
0
        /// <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);
        }
Beispiel #23
0
        /// <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);
        }
Beispiel #24
0
        /// <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);
        }
Beispiel #25
0
 public int Update <T>(T entity) where T : class
 {
     return(ExecuteBySql(DatabaseCommon.UpdateSql <T>(entity).ToString(), DatabaseCommon.GetParameter <T>(entity)));
 }
Beispiel #26
0
        /// <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();
            }
        }
Beispiel #27
0
 public int Delete <T>() where T : class
 {
     return(ExecuteBySql(DatabaseCommon.DeleteSql(EntityAttribute.GetEntityTable <T>()).ToString()));
 }
Beispiel #28
0
 /// <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));
 }
Beispiel #29
0
        /// <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();
                }
            }
        }
Beispiel #30
0
 public int UpdateNew <T>(T entity, bool isBatch = false) where T : class
 {
     return(ExecuteBySql(DatabaseCommon.UpdateSql <T>(entity).ToString(), DatabaseCommon.GetParameter <T>(entity)));
 }
Beispiel #31
0
        /// <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;
            }
        }