Esempio n. 1
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]);
        }