private void CheckTranscodeing(bool checkIsJson = true)
 {
     if (this.EntityInfo.Columns.Any(it => it.IsTranscoding))
     {
         Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsTranscoding", "SetColumns方式更新不支持IsTranscoding,你可以使用db.Updateable(实体)的方式更新"));
     }
     if (checkIsJson && this.EntityInfo.Columns.Any(it => it.IsJson))
     {
         Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsJson", "SetColumns方式更新不支持IsJson,你可以使用db.Updateable(实体)的方式更新"));
     }
     if (this.EntityInfo.Columns.Any(it => it.IsArray))
     {
         Check.Exception(true, ErrorMessage.GetThrowMessage("UpdateColumns no support IsArray", "SetColumns方式更新不支持IsArray,你可以使用db.Updateable(实体)的方式更新"));
     }
 }
 public static void TryJsonNet()
 {
     if (!IsTryJsonNet)
     {
         try
         {
             new SerializeService().SerializeObject(new { });
             IsTryJsonNet = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 " SqlSugar Some functions are used in newtonsoft ,Nuget references Newtonsoft.Json 9.0.0.1 + .",
                 " Newtonsoft.Json.dll 未安装或者版本冲突,按下步骤操作即可 1、从Nuget卸载所有项目的Newtonsoft.Json和SqlSugar,检查引用中是否还存在,存在直接删掉引用,然后Nuget重新安装即可");
             throw new Exception(message);
         }
     }
 }
示例#3
0
 public static void TryJsonNet()
 {
     if (!IsTryJsonNet)
     {
         try
         {
             new SerializeService().SerializeObject(new { });
             IsTryJsonNet = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 " SqlSugar Some functions are used in newtonsoft ,Nuget references Newtonsoft.Json 9.0.0.1 + .",
                 " SqlSugar 部分功能用到Newtonsoft.Json.dll,需要在Nuget上安装 Newtonsoft.Json 9.0.0.1及以上版本,如果有版本兼容问题请先删除原有引用");
             throw new Exception(message);
         }
     }
 }
 public static void TryJsonNet()
 {
     if (!IsTryJsonNet)
     {
         try
         {
             new SerializeService().SerializeObject(new { });
             IsTryJsonNet = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 " SqlSugar Some functions are used in newtonsoft ,Nuget references Newtonsoft.Json 9.0.0.1 + .",
                 " Newtonsoft.Json.dll 未安装或者版本冲突,按下步骤操作即可 1、从Nuget卸载所有项目的Newtonsoft.Json和SqlSugar,用Nuget重新安装即可,如果还报错在最上层 WBE层 用NUGET安装,详细教程:https://www.donet5.com/Doc/8/1154");
             throw new Exception(message);
         }
     }
 }
 public static void TryJsonNet()
 {
     if (!IsTryJsonNet)
     {
         try
         {
             new SerializeService().SerializeObject(new { });
             IsTryJsonNet = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 " SqlSugar Some functions are used in newtonsoft ,Nuget references Newtonsoft.Json 9.0.0.1 + .",
                 " SqlSugar 部分功能用到Newtonsoft.Json.dll,需要在Nuget上安装 Newtonsoft.Json 9.0.0.1及以上版本。如果有版本兼容问题请先删除原有引用(注意:所有项目类库),全部重新从NUGET下载,如果还不明白,请查看详细教程 http://www.codeisbug.com/Doc/8/1154");
             throw new Exception(message);
         }
     }
 }
 public static void TryMySqlData()
 {
     if (!IsTryMySqlData)
     {
         try
         {
             MySqlProvider db   = new MySqlProvider();
             var           conn = db.GetAdapter();
             IsTryMySqlData = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to MySql.Data.dll",
                 " MySql.Data.dll  未安装或者版本冲突,按下面步骤操作即可 1、从Nuget卸载所有项目的MySql.Data.dll和SqlSugar,检查引用中是否还存在,存在直接删掉引用,然后Nuget重新安装即可 ,注意.NET 4.52版本以下用户只能用MySql.Data 6.9.12 版本 记住 6.9.12 或者6.9之前的版本 , .NET 4.52及以上用最新的");
             throw new Exception(message);
         }
     }
 }
 public static void TryPostgreSQL()
 {
     if (!IsTryPgSql)
     {
         try
         {
             PostgreSQLProvider db = new PostgreSQLProvider();
             var conn = db.GetAdapter();
             IsTryPgSql = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to Npgsql.dll",
                 "需要引用Npgsql.dll,请在Nuget安装最新稳定版本,如果有版本兼容问题请先删除原有引用");
             throw new Exception(message);
         }
     }
 }
示例#8
0
 internal static void TryOracle()
 {
     if (!IsTryOracle)
     {
         try
         {
             OracleProvider db   = new OracleProvider();
             var            conn = db.GetAdapter();
             IsTryOracle = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to Oracle.ManagedDataAccess.Core",
                 "你需要引用 Oracle.ManagedDataAccess.Core");
             throw new Exception(message);
         }
     }
 }
示例#9
0
 public static void TryPostgreSQL()
 {
     if (!IsTryPgSql)
     {
         try
         {
             PostgreSQLProvider db = new PostgreSQLProvider();
             var conn = db.GetAdapter();
             IsTryPgSql = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to Npgsql 3.2.7",
                 "你需要引用 Npgsql 3.2.7及以上版本");
             throw new Exception(message);
         }
     }
 }
示例#10
0
 public static void TryDm()
 {
     if (!IsTryDm)
     {
         try
         {
             DmProvider db   = new DmProvider();
             var        conn = db.GetAdapter();
             IsTryDm = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to DmProvider",
                 "你需要引用 DmProvider");
             throw new Exception(message);
         }
     }
 }
示例#11
0
 public static void TryPostgreSQL()
 {
     if (!IsTryPgSql)
     {
         try
         {
             PostgreSQLProvider db = new PostgreSQLProvider();
             var conn = db.GetAdapter();
             IsTryPgSql = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to Npgsql.dll",
                 " Npgsql.dll 未安装或者版本冲突,按下面步骤操作即可 1、从Nuget卸载所有项目的Npgsql.dll和SqlSugar,检查引用中是否还存在,存在直接删掉引用,然后Nuget重新安装即可");
             throw new Exception(message);
         }
     }
 }
示例#12
0
 internal static void TryOracle()
 {
     if (!IsTryOracle)
     {
         try
         {
             OracleProvider db   = new OracleProvider();
             var            conn = db.GetAdapter();
             IsTryOracle = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to Oracle.ManagedDataAccess.dll",
                 "需要引用ManagedDataAccess.dll 未安装或者版本冲突, 按下面步骤操作即可 1、从Nuget卸载所有项目的ManagedDataAccess.dll和SqlSugar,检查引用中是否还存在,存在直接删掉引用,然后Nuget重新安装即可");
             throw new Exception(message);
         }
     }
 }
 public static void TrySqlite()
 {
     if (!IsTrySqlite)
     {
         try
         {
             SqliteProvider db   = new SqliteProvider();
             var            conn = db.GetAdapter();
             IsTrySqlite = true;
         }
         catch (Exception ex)
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to System.Data.SQLite.dll." + ex.Message,
                 "System.Data.SQLite.dll  未安装或者版本冲突,按下面步骤操作即可 1、从Nuget卸载所有项目的System.Data.SQLite.dll 和SqlSugar,用Nuget重新安装即可,如果还报错在最上层 WBE层 用NUGET安装,详细教程:https://www.donet5.com/Doc/8/1154");
             throw new Exception(message);
         }
     }
 }
示例#14
0
 public static void TrySqlite()
 {
     if (!IsTrySqlite)
     {
         try
         {
             SqliteProvider db   = new SqliteProvider();
             var            conn = db.GetAdapter();
             IsTrySqlite = true;
         }
         catch (Exception ex)
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to System.Data.SQLite.dll." + ex.Message,
                 "System.Data.SQLite.dll  未安装或者版本冲突,按下面步骤操作即可 1、从Nuget卸载所有项目的System.Data.SQLite.dll 和SqlSugar,检查引用中是否还存在,存在直接删掉引用,然后Nuget重新安装即可");
             throw new Exception(message);
         }
     }
 }
 public static void TryPostgreSQL()
 {
     if (!IsTryPgSql)
     {
         try
         {
             PostgreSQLProvider db = new PostgreSQLProvider();
             var conn = db.GetAdapter();
             IsTryPgSql = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to Npgsql.dll",
                 " Npgsql.dll 未安装或者版本冲突,按下面步骤操作即可 1、从Nuget卸载所有项目的Npgsql.dll和SqlSugar,用Nuget重新安装即可,如果还报错在最上层 WBE层 用NUGET安装,详细教程:https://www.donet5.com/Doc/8/1154");
             throw new Exception(message);
         }
     }
 }
 internal static void TryOracle()
 {
     if (!IsTryOracle)
     {
         try
         {
             OracleProvider db   = new OracleProvider();
             var            conn = db.GetAdapter();
             IsTryOracle = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to Oracle.ManagedDataAccess.dll",
                 "需要引用ManagedDataAccess.dll 未安装或者版本冲突, 按下面步骤操作即可 1、从Nuget卸载所有项目的ManagedDataAccess.dll和SqlSugar,用Nuget重新安装即可,如果还报错在最上层 WBE层 用NUGET安装,详细教程:https://www.donet5.com/Doc/8/1154");
             throw new Exception(message);
         }
     }
 }
 public static void TrySqlite()
 {
     if (!IsTrySqlite)
     {
         try
         {
             SqliteProvider db   = new SqliteProvider();
             var            conn = db.GetAdapter();
             IsTrySqlite = true;
         }
         catch (Exception ex)
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to System.Data.SQLite.dll." + ex.Message,
                 "你需要引用System.Data.SQLite.dll,如果有版本兼容问题请先删除原有引用");
             throw new Exception(message);
         }
     }
 }
 public static void TryMySqlData()
 {
     if (!IsTryMySqlData)
     {
         try
         {
             MySqlProvider db   = new MySqlProvider();
             var           conn = db.GetAdapter();
             IsTryMySqlData = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to MySql.Data.dll",
                 " MySql.Data.dll  未安装或者版本冲突,按下面步骤操作即可 1、从Nuget卸载所有项目的MySql.Data.dll和SqlSugar,用Nuget重新安装即可,如果还报错在最上层 WBE层 用NUGET安装,注意.NET 4.52版本以下用户只能用MySql.Data 6.9.12 版本 记住 6.9.12 或者6.9之前的版本 , .NET 4.52及以上用最新的 ,详细教程:https://www.donet5.com/Doc/8/1154");
             throw new Exception(message);
         }
     }
 }
 internal static void TryOracle()
 {
     if (!IsTryOracle)
     {
         try
         {
             OracleProvider db   = new OracleProvider();
             var            conn = db.GetAdapter();
             IsTryOracle = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to Oracle.ManagedDataAccess.dll",
                 "需要引用ManagedDataAccess.dll,请在Nuget安装最新稳定版本,如果有版本兼容问题请先删除原有引用");
             throw new Exception(message);
         }
     }
 }
 public static void TryMySqlData()
 {
     if (!IsTryMySqlData)
     {
         try
         {
             MySqlProvider db   = new MySqlProvider();
             var           conn = db.GetAdapter();
             IsTryMySqlData = true;
         }
         catch
         {
             var message = ErrorMessage.GetThrowMessage(
                 "You need to refer to MySql.Data.dll",
                 "需要引用MySql.Data.dll,请在Nuget安装最新稳定版本,如果有版本兼容问题请先删除原有引用");
             throw new Exception(message);
         }
     }
 }
示例#21
0
 public virtual void ExecuteBefore(string sql, SugarParameter[] parameters)
 {
     if (this.Context.IsAsyncMethod == false && this.Context.CurrentConnectionConfig.Debugger != null && this.Context.CurrentConnectionConfig.Debugger.EnableThreadSecurityValidation == true)
     {
         var contextId = this.Context.ContextID.ToString();
         var processId = Thread.CurrentThread.ManagedThreadId.ToString();
         var cache     = new ReflectionInoCacheService();
         if (!cache.ContainsKey <string>(contextId))
         {
             cache.Add(contextId, processId);
         }
         else
         {
             var cacheValue = cache.Get <string>(contextId);
             if (processId != cacheValue)
             {
                 throw new SqlSugarException(this.Context, ErrorMessage.GetThrowMessage("Detection of SqlSugarClient cross-threading usage,a thread needs a new one", "检测到声名的SqlSugarClient跨线程使用,请检查是否静态、是否单例、或者IOC配置错误引起的,保证一个线程new出一个对象 ,具本Sql:") + sql, parameters);
             }
         }
     }
     this.BeforeTime = DateTime.Now;
     if (this.IsEnableLogEvent)
     {
         Action <string, SugarParameter[]> action = LogEventStarting;
         if (action != null)
         {
             if (parameters == null || parameters.Length == 0)
             {
                 action(sql, new SugarParameter[] { });
             }
             else
             {
                 action(sql, parameters);
             }
         }
     }
 }
示例#22
0
        private string _ExecuteCommand(string LogicFieldName, out ISqlSugarClient db, out string where, out List <SugarParameter> pars)
        {
            var entityInfo = Deleteable.EntityInfo;

            db    = Deleteable.Context;
            where = DeleteBuilder.GetWhereString.Substring(5);
            pars  = DeleteBuilder.Parameters;
            if (LogicFieldName.IsNullOrEmpty())
            {
                var column = entityInfo.Columns.FirstOrDefault(it =>
                                                               it.PropertyName.EqualCase("isdelete") ||
                                                               it.PropertyName.EqualCase("isdeleted") ||
                                                               it.DbColumnName.EqualCase("isdelete") ||
                                                               it.DbColumnName.EqualCase("isdeleted"));
                if (column != null)
                {
                    LogicFieldName = column.DbColumnName;
                }
            }
            Check.Exception(LogicFieldName == null, ErrorMessage.GetThrowMessage(
                                $"{entityInfo.EntityName} is not isdelete or isdeleted"
                                , $"{entityInfo.EntityName} 没有IsDelete或者IsDeleted 的属性, 你也可以用 IsLogic().ExecuteCommand(\"列名\")"));
            return(LogicFieldName);
        }
示例#23
0
 private void ThrowUpdateByObject()
 {
     Check.Exception(UpdateParameterIsNull == false, ErrorMessage.GetThrowMessage(" no support SetColumns and Where", "根据对像更新 db.Updateabe(对象) 禁止使用 SetColumns和Where ,你可以使用WhereColumns 和  UpdateColumns。 更新分为2种方式 1.根据表达式更新 2.根据实体或者集合更新 , 具体用法请查看文档 "));
 }
示例#24
0
 private void ThrowUpdateByExpression()
 {
     Check.Exception(UpdateParameterIsNull == true, ErrorMessage.GetThrowMessage(" no support UpdateColumns and WhereColumns", "根据表达式更新 db.Updateable<T>() 禁止使用 UpdateColumns和WhereColumns,你可以使用 SetColumns Where 等。更新分为2种方式 1.根据表达式更新 2.根据实体或者集合更新, 具体用法请查看文档 "));
 }
示例#25
0
 private void ThrowUpdateByObject()
 {
     Check.Exception(UpdateParameterIsNull == false, ErrorMessage.GetThrowMessage("no support UpdateColumns and WhereColumns ", "根据表达式进行更新 禁止使用 UpdateColumns和WhereColumns ,你可以使用SetColumns 和 Where。 更新分为2种方式 1.根据表达式更新 2.根据实体或者集合更新 , 具体用法请查看文档 "));
 }
示例#26
0
        public virtual void ExistLogic(EntityInfo entityInfo)
        {
            if (entityInfo.Columns.HasValue() && entityInfo.IsDisabledUpdateAll == false)
            {
                //Check.Exception(entityInfo.Columns.Where(it => it.IsPrimarykey).Count() > 1, "Multiple primary keys do not support modifications");

                var tableName = GetTableName(entityInfo);
                var dbColumns = this.Context.DbMaintenance.GetColumnInfosByTableName(tableName);
                ConvertColumns(dbColumns);
                var entityColumns = entityInfo.Columns.Where(it => it.IsIgnore == false).ToList();
                var dropColumns   = dbColumns
                                    .Where(dc => !entityColumns.Any(ec => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                    .Where(dc => !entityColumns.Any(ec => dc.DbColumnName.Equals(ec.DbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                    .ToList();
                var addColumns = entityColumns
                                 .Where(ec => ec.OldDbColumnName.IsNullOrEmpty() || !dbColumns.Any(dc => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                 .Where(ec => !dbColumns.Any(dc => ec.DbColumnName.Equals(dc.DbColumnName, StringComparison.CurrentCultureIgnoreCase))).ToList();
                var alterColumns = entityColumns
                                   .Where(ec => !dbColumns.Any(dc => dc.DbColumnName.Equals(ec.OldDbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                   .Where(ec =>
                                          dbColumns.Any(dc => dc.DbColumnName.Equals(ec.DbColumnName) &&
                                                        ((ec.Length != dc.Length && !UtilMethods.GetUnderType(ec.PropertyInfo).IsEnum() && UtilMethods.GetUnderType(ec.PropertyInfo).IsIn(UtilConstants.StringType)) ||
                                                         ec.IsNullable != dc.IsNullable ||
                                                         IsSamgeType(ec, dc)))).ToList();
                var renameColumns = entityColumns
                                    .Where(it => !string.IsNullOrEmpty(it.OldDbColumnName))
                                    .Where(entityColumn => dbColumns.Any(dbColumn => entityColumn.OldDbColumnName.Equals(dbColumn.DbColumnName, StringComparison.CurrentCultureIgnoreCase)))
                                    .ToList();


                var isMultiplePrimaryKey = dbColumns.Where(it => it.IsPrimarykey).Count() > 1 || entityColumns.Where(it => it.IsPrimarykey).Count() > 1;


                var isChange = false;
                foreach (var item in addColumns)
                {
                    this.Context.DbMaintenance.AddColumn(tableName, EntityColumnToDbColumn(entityInfo, tableName, item));
                    isChange = true;
                }
                if (entityInfo.IsDisabledDelete == false)
                {
                    foreach (var item in dropColumns)
                    {
                        this.Context.DbMaintenance.DropColumn(tableName, item.DbColumnName);
                        isChange = true;
                    }
                }
                foreach (var item in alterColumns)
                {
                    this.Context.DbMaintenance.UpdateColumn(tableName, EntityColumnToDbColumn(entityInfo, tableName, item));
                    isChange = true;
                }
                foreach (var item in renameColumns)
                {
                    this.Context.DbMaintenance.RenameColumn(tableName, item.OldDbColumnName, item.DbColumnName);
                    isChange = true;
                }

                foreach (var item in entityColumns)
                {
                    var dbColumn = dbColumns.FirstOrDefault(dc => dc.DbColumnName.Equals(item.DbColumnName, StringComparison.CurrentCultureIgnoreCase));
                    if (dbColumn == null)
                    {
                        continue;
                    }
                    bool pkDiff, idEntityDiff;
                    KeyAction(item, dbColumn, out pkDiff, out idEntityDiff);
                    if (dbColumn != null && pkDiff && !idEntityDiff && isMultiplePrimaryKey == false)
                    {
                        var isAdd = item.IsPrimarykey;
                        if (isAdd)
                        {
                            this.Context.DbMaintenance.AddPrimaryKey(tableName, item.DbColumnName);
                        }
                        else
                        {
                            this.Context.DbMaintenance.DropConstraint(tableName, string.Format("PK_{0}_{1}", tableName, item.DbColumnName));
                        }
                    }
                    else if ((pkDiff || idEntityDiff) && isMultiplePrimaryKey == false)
                    {
                        ChangeKey(entityInfo, tableName, item);
                    }
                }
                if (isMultiplePrimaryKey)
                {
                    var oldPkNames = dbColumns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName.ToLower()).OrderBy(it => it).ToList();
                    var newPkNames = entityColumns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName.ToLower()).OrderBy(it => it).ToList();
                    if (!Enumerable.SequenceEqual(oldPkNames, newPkNames))
                    {
                        Check.Exception(true, ErrorMessage.GetThrowMessage("Modification of multiple primary key tables is not supported. Delete tables while creating", "不支持修改多主键表,请删除表在创建"));
                    }
                }
                if (isChange && IsBackupTable)
                {
                    this.Context.DbMaintenance.BackupTable(tableName, tableName + DateTime.Now.ToString("yyyyMMddHHmmss"), MaxBackupDataRows);
                }
            }
        }
 void Error01()
 {
     Check.Exception(mappers == null, ErrorMessage.GetThrowMessage(expression.ToString() + "no support", "当前表达式" + expression.ToString() + "必须在Mapper之后使用"));
 }
 void ThrowTrue(bool isError)
 {
     Check.Exception(isError, ErrorMessage.GetThrowMessage(expression.ToString() + "no support", "不支持表达式" + expression.ToString() + " 1.检查当前表达式中的别名是否与Mapper中的一致 2.目前只支持 1对1 Mapper下的 Where "));
 }
示例#29
0
 internal void CheckPrimaryKey()
 {
     Check.Exception(EntityInfo.Columns.Any(it => it.IsIdentity == true), ErrorMessage.GetThrowMessage("Split table can't IsIdentity=true", "分表禁止使用自增列"));
 }