示例#1
0
        private string GetDbTypeCode()
        {
            StringBuilder code = new StringBuilder();

            var columns = Entity.Properties;

            foreach (var field in columns)
            {
                code.AppendFormat(@"
                case ""{0}"":
                    return DbType.{1};"
                                  , field.PropertyName
                                  , SQLiteDefault.ToDbType(field.CsType));
            }

            return(string.Format(@"
        /// <summary>
        /// 得到字段的DbType类型
        /// </summary>
        /// <param name=""field"">字段名称</param>
        /// <returns>参数</returns>
        protected sealed override DbType GetDbType(string field)
        {{
            switch (field)
            {{{0}
            }}
            return DbType.String;
        }}", code));
        }
示例#2
0
        private string LoadEntityCode()
        {
            StringBuilder sql = new StringBuilder();

            sql.AppendFormat(@"

        /// <summary>
        /// 载入数据
        /// </summary>
        /// <param name=""reader"">数据读取器</param>
        /// <param name=""entity"">读取数据的实体</param>
        protected sealed override void LoadEntity(SQLiteDataReader reader,{0} entity)
        {{
            using (new EditScope(entity.Status, EditArrestMode.All, false))
            {{"
                             , this.Entity.EntityName);
            int idx = 0;

            foreach (var field in Entity.Properties)
            {
                sql.AppendFormat(@"
                if (!reader.IsDBNull({2}))
                    entity.{0} = {1}({2});"
                                 , field.PropertyName
                                 , SQLiteDefault.GetDBReaderFunctionName(field.CsType), idx++);
                if (field.Nullable)
                {
                    sql.AppendFormat(@"
                else
                    entity.{0} = null;"
                                     , field.PropertyName);
                }
                else
                {
                    sql.AppendFormat(@"
                else
                    entity.{0} = default({1});"
                                     , field.PropertyName
                                     , field.CsType);
                }
            }
            sql.Append(@"
            }
        }");
            return(sql.ToString());
        }
示例#3
0
        private string UpdateCode()
        {
            var pk = Entity.PrimaryColumn;

            return(string.Format(@"

        /// <summary>
        /// 设置更新数据的命令
        /// </summary>
        /// <param name=""entity"">实体对象</param>
        /// <param name=""cmd"">命令</param>
        protected sealed override void SetUpdateCommand({0} entity, SQLiteCommand cmd)
        {{
            StringBuilder sql = new StringBuilder();
            cmd.Parameters.Add(new SQLiteParameter(""{2}"", DbType.{3}){{ Value = entity.{2}}});
            bool isFirst = true;
            foreach (var field in entity.Status.ModifiedProperties)
            {{
                if(field == ""{2}"")
                    continue;
                cmd.Parameters.Add(new SQLiteParameter(field, GetDbType(field)){{ Value = entity.GetValue(field)}});
                if (isFirst)
                {{
                    isFirst = false;
                }}
                else
                {{
                    sql.Append("","");
                }}
                sql.AppendFormat(@""
    {{0}} = ${{0}}"", field);
            }}
            cmd.CommandText = string.Format(@""
UPDATE [{1}] SET
{{0}}
WHERE {2} = ${2};"",sql);
    }}"
                                 , this.Entity.EntityName
                                 , this.Entity.SaveTable
                                 , pk.PropertyName
                                 , SQLiteDefault.ToDbType(pk.CsType)));
        }
示例#4
0
        private string InsertCode()
        {
            StringBuilder code = new StringBuilder();

            code.AppendFormat(@"

        /// <summary>
        /// 设置插入数据的命令
        /// </summary>
        /// <param name=""entity"">实体对象</param>
        /// <param name=""cmd"">命令</param>
        /// <returns>返回真说明要取主键</returns>
        protected sealed override bool SetInsertCommand({0} entity, SQLiteCommand cmd)
        {{
            cmd.CommandText = InsertSql;", this.Entity.EntityName);

            var columns = Entity.Properties.Where(p => !p.IsCompute && !p.IsIdentity);

            foreach (var field in columns)
            {
                code.AppendFormat(@"
            cmd.Parameters.Add(new SQLiteParameter(""{0}"",DbType.{1}){{ Value = entity.{0}}});"
                                  , field.PropertyName
                                  , SQLiteDefault.ToDbType(field.CsType));
            }
            if (this.Entity.PrimaryColumn.IsIdentity)
            {
                code.Append(@"
            return true;
        }");
            }
            else
            {
                code.Append(@"
            return false;
        }");
            }
            return(code.ToString());
        }
示例#5
0
        private string TableSql(TableSchema schema)
        {
            StringBuilder sql = new StringBuilder();

            sql.AppendFormat(@"
CREATE TABLE [{0}](", schema.TableName);

            bool isFirst = true;
            var  pk      = schema.PrimaryColumn;

            if (pk != null)
            {
                sql.AppendLine();
                isFirst = false;
                sql.AppendFormat(@"    [{0}]", pk.PropertyName);
                if (pk.IsIdentity)
                {
                    sql.Append(" INTEGER PRIMARY KEY AUTOINCREMENT");
                }
                else
                {
                    sql.AppendFormat("{0} NOT NULL PRIMARY KEY", SQLiteDefault.ToDataBaseType(pk.PropertyType.Type));
                }
            }
            foreach (var field in schema.ColumnSchemas.Where(p => p.PropertyType != null && !p.IsPrimaryKey))
            {
                if (isFirst)
                {
                    sql.AppendLine();
                    isFirst = false;
                }
                else
                {
                    sql.AppendLine(",");
                }
                sql.AppendFormat(@"    [{0}] {1}", field.PropertyName, SQLiteDefault.ToDataBaseType(field.PropertyType.Type));
                if (!field.PropertyType.Nullable)
                {
                    switch (field.PropertyType.Type.ToLower())
                    {
                    case "string":
                    case "Binary":
                    case "byte[]":
                        break;

                    default:
                        sql.Append(" NOT NULL");
                        break;
                    }
                }
            }
            sql.AppendLine();
            sql.Append(")");
            return(string.Format(@"

        /// <summary>
        /// {0}的结构语句
        /// </summary>
        private TableSql _{1}Sql = new TableSql
        {{
            TableName = ""{1}"",
            PimaryKey = ""{2}"",
            CreateSql = @""{3}"",
        }};", schema.Description, schema.TableName, schema.PrimaryColumn.PropertyName, sql));
        }