Пример #1
0
        /// <summary>
        /// 创建一个实体对象的Insert语句
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="data">传入的对象</param>
        /// <param name="mappingType">映射类型</param>
        /// <param name="isFilterByT">是否按类型进行映射过滤</param>
        /// <returns>Insert语句</returns>
        public static string GetInsertSql <T>(T data, Type mappingType, bool isFilterByT)
        {
            //获取映射关系集合
            ORMappingItemCollection mappings = ORMapping.GetMappingInfo(mappingType);

            //过滤
            if (isFilterByT)
            {
                mappings = mappings.FilterMappingInfoByDeclaringType(mappingType);
            }

            return(String.Format("{0} {1} ",
                                 ORMapping.GetInsertSql(data, mappings, TSqlBuilder.Instance),
                                 TSqlBuilder.Instance.DBStatementSeperator));
        }
Пример #2
0
        /// <summary>
        /// 创建实体对象的Update语句
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="data">实体对象</param>
        /// <param name="mappingType">映射类型</param>
        /// <param name="isFilterByT">是否按实体类型进行过滤</param>
        /// <returns>Update语句</returns>
        public static string GetUpdateSql <T>(T data, Type mappingType, bool isFilterByT)
        {
            //获取映射关系集合
            ORMappingItemCollection mappings = ORMapping.GetMappingInfo(mappingType);

            //过滤
            if (isFilterByT)
            {
                mappings = mappings.FilterMappingInfoByDeclaringType(mappingType);
            }

            StringBuilder sqlStr = new StringBuilder();

            sqlStr.Append(ORMapping.GetUpdateSql(data, mappings, TSqlBuilder.Instance));
            sqlStr.Append(TSqlBuilder.Instance.DBStatementSeperator);
            sqlStr.Append(String.Format(" IF (@@ROWCOUNT = 0) BEGIN {0} END ",
                                        ORMapping.GetInsertSql(data, mappings, TSqlBuilder.Instance)));
            sqlStr.Append(TSqlBuilder.Instance.DBStatementSeperator);

            return(sqlStr.ToString());
        }
Пример #3
0
        public static string GetDeleteSql <T>(T data, Type mappingType, bool isFilterByT)
        {
            //获取映射关系集合
            ORMappingItemCollection mappings = ORMapping.GetMappingInfo(mappingType);

            //过滤
            if (isFilterByT)
            {
                mappings = mappings.FilterMappingInfoByDeclaringType(mappingType);
            }

            //创建Where子句表达式
            WhereSqlClauseBuilder builder = ORMapping.GetWhereSqlClauseBuilderByPrimaryKey(data, mappings);

            ExceptionHelper.FalseThrow(builder.Count > 0, "必须为对象{0}指定关键字", typeof(T));

            return(String.Format(" DELETE FROM {0} WHERE {1} {2} ",
                                 mappings.TableName,
                                 builder.ToSqlString(TSqlBuilder.Instance),
                                 TSqlBuilder.Instance.DBStatementSeperator));
        }