Esempio n. 1
0
        public override IEnumerable <T> GetByIds <T>(object ids, string returnFields = null)
        {
            var sqls = GetDapperSqls(typeof(T));

            if (string.IsNullOrEmpty(sqls.KeyName))
            {
                throw new Exception("表[" + sqls.TableName + "]没有主键");
            }
            if (DapperCommon.ObjectIsEmpty(ids))
            {
                return(Enumerable.Empty <T>());
            }

            Dapper.DynamicParameters dpar = new Dapper.DynamicParameters();
            dpar.Add("@ids", ids);
            if (string.IsNullOrEmpty(returnFields))
            {
                return(Query <T>(sqls.GetByIdsSql, dpar));
            }
            else
            {
                string sql = string.Format("SELECT {0} FROM [{1}] WHERE [{2}] IN @ids", returnFields, sqls.TableName, sqls.KeyName);
                return(Query <T>(sql, dpar));
            }
        }
Esempio n. 2
0
        public override int UpdateManyByWhere <T>(string where, string updateFields, IEnumerable <T> models)
        {
            var    sqls = GetDapperSqls(typeof(T));
            string sql  = DapperCommon.BuilderUpdateByWhereSql(sqls, where, updateFields, "[", "]");

            return(Execute(sql, models));
        }
Esempio n. 3
0
        public override int UpdateByWhere <T>(string where, string updateFields, T model)
        {
            var    sqls = GetDapperSqls(typeof(T));
            string sql  = DapperCommon.BuilderUpdateByWhereSql(sqls, where, updateFields, "`", "`");

            return(Execute(sql, model));
        }
Esempio n. 4
0
        public static DapperSqls GetDapperSqls(Type t)
        {
            if (!DapperSqlsDict.Keys.Contains(t.TypeHandle))
            {
                lock (_locker)
                {
                    if (!DapperSqlsDict.Keys.Contains(t.TypeHandle))
                    {
                        DapperSqls sqls = DapperCommon.GetDapperSqls(t);

                        string Fields   = DapperCommon.GetFieldsStr(sqls.AllFieldList, "[", "]");
                        string FieldsAt = DapperCommon.GetFieldsAtStr(sqls.AllFieldList);
                        string FieldsEq = DapperCommon.GetFieldsEqStr(sqls.AllFieldList, "[", "]");

                        string FieldsExtKey   = DapperCommon.GetFieldsStr(sqls.ExceptKeyFieldList, "[", "]");
                        string FieldsAtExtKey = DapperCommon.GetFieldsAtStr(sqls.ExceptKeyFieldList);
                        string FieldsEqExtKey = DapperCommon.GetFieldsEqStr(sqls.ExceptKeyFieldList, "[", "]");

                        sqls.AllFields     = Fields;
                        sqls.AllFieldsAt   = FieldsAt;
                        sqls.AllFieldsAtEq = FieldsEq;

                        sqls.AllFieldsExceptKey     = FieldsExtKey;
                        sqls.AllFieldsAtExceptKey   = FieldsAtExtKey;
                        sqls.AllFieldsAtEqExceptKey = FieldsEqExtKey;

                        if (!string.IsNullOrEmpty(sqls.KeyName) && sqls.IsIdentity) //有主键并且是自增
                        {
                            sqls.InsertSql         = string.Format("INSERT INTO [{0}]({1})VALUES({2})", sqls.TableName, FieldsExtKey, FieldsAtExtKey);
                            sqls.InsertIdentitySql = string.Format("INSERT INTO [{0}]({1})VALUES({2})", sqls.TableName, Fields, FieldsAt);
                        }
                        else
                        {
                            sqls.InsertSql = string.Format("INSERT INTO [{0}]({1})VALUES({2})", sqls.TableName, Fields, FieldsAt);
                        }

                        if (!string.IsNullOrEmpty(sqls.KeyName)) //含有主键
                        {
                            sqls.DeleteByIdSql  = string.Format("DELETE FROM [{0}] WHERE [{1}]=@id", sqls.TableName, sqls.KeyName);
                            sqls.DeleteByIdsSql = string.Format("DELETE FROM [{0}] WHERE [{1}] IN @ids", sqls.TableName, sqls.KeyName);
                            sqls.GetByIdSql     = string.Format("SELECT {0} FROM [{1}] WHERE [{2}]=@id", Fields, sqls.TableName, sqls.KeyName);
                            sqls.GetByIdsSql    = string.Format("SELECT {0} FROM [{1}] WHERE [{2}] IN @ids", Fields, sqls.TableName, sqls.KeyName);
                            sqls.UpdateSql      = string.Format("UPDATE [{0}] SET {1} WHERE [{2}]=@{2}", sqls.TableName, FieldsEqExtKey, sqls.KeyName);
                        }
                        sqls.DeleteAllSql = string.Format("DELETE FROM [{0}]", sqls.TableName);
                        sqls.GetAllSql    = string.Format("SELECT {0} FROM [{1}]", Fields, sqls.TableName);

                        DapperSqlsDict[t.TypeHandle] = sqls;
                    }
                }
            }

            return(DapperSqlsDict[t.TypeHandle]);
        }
Esempio n. 5
0
        public override int UpdateMany <T>(IEnumerable <T> models, string updateFields)
        {
            var sqls = GetDapperSqls(typeof(T));

            if (string.IsNullOrEmpty(sqls.KeyName))
            {
                throw new Exception("表[" + sqls.TableName + "]没有主键");
            }

            string sql = DapperCommon.BuilderUpdateByIdSql(sqls, updateFields, "[", "]");

            return(Execute(sql, models));
        }
Esempio n. 6
0
        public override int DeleteByIds <T>(object ids)
        {
            var sqls = GetDapperSqls(typeof(T));

            if (string.IsNullOrEmpty(sqls.KeyName))
            {
                throw new Exception("表[" + sqls.TableName + "]没有主键");
            }
            if (DapperCommon.ObjectIsEmpty(ids))
            {
                return(0);
            }
            Dapper.DynamicParameters dpar = new Dapper.DynamicParameters();
            dpar.Add("@ids", ids);
            return(Execute(sqls.DeleteByIdsSql, dpar));
        }
Esempio n. 7
0
        public override IEnumerable <T> GetByIdsWhichField <T>(object ids, string whichField, string returnFields = null)
        {
            var sqls = GetDapperSqls(typeof(T));

            if (DapperCommon.ObjectIsEmpty(ids))
            {
                return(Enumerable.Empty <T>());
            }

            Dapper.DynamicParameters dpar = new Dapper.DynamicParameters();
            dpar.Add("@ids", ids);
            if (string.IsNullOrEmpty(returnFields))
            {
                returnFields = sqls.AllFields;
            }
            string sql = string.Format("SELECT {0} FROM [{1}] WHERE [{2}] IN @ids", returnFields, sqls.TableName, whichField);

            return(Query <T>(sql, dpar));
        }