コード例 #1
0
ファイル: Builder_Data.cs プロジェクト: wenha/CodeMaker
        /// <summary>
        /// 将DataReader转换为List方法
        /// </summary>
        /// <param name="fields"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        private string GetConvertDataReaderToListMethod(List <Model.Fields> fields, Model.CodeCreate param)
        {
            //自增列
            var  Identitys    = fields.Where(p => p.IsIdentity);
            var  NotIdeneitys = fields.Where(p => !p.IsIdentity);
            bool HasIdentity  = Identitys.Count() > 0;

            //主键
            var  Primarykeys    = fields.Where(p => p.IsPrimaryKey);
            var  NotPrimarykeys = fields.Where(p => !p.IsPrimaryKey);
            bool HasPrimarykey  = Primarykeys.Count() > 0;

            StringBuilder data = new StringBuilder();

            data.Append("\t\t/// <summary>\r\n");
            data.Append("\t\t/// 将DataRedar转换为List\r\n");
            data.Append("\t\t/// </summary>\r\n");
            data.Append("\t\tprivate List<" + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Model + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "." + param.ClassName + "> DataReaderToList(" + createInstance.GetDataReaderType() + " dataReader)\r\n");
            data.Append("\t\t{\r\n");
            data.Append("\t\t\tList<" + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Model + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "." + param.ClassName + "> List = new List<" + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Model + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "." + param.ClassName + ">();\r\n");
            data.Append("\t\t\t" + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Model + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "." + param.ClassName + " model = null;\r\n");
            data.Append("\t\t\twhile(dataReader.Read())\r\n");
            data.Append("\t\t\t{\r\n");

            data.Append("\t\t\t\tmodel = new " + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Model + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "." + param.ClassName + "();\r\n");
            int    i          = 0;
            string nullString = string.Empty;

            foreach (var field in fields)
            {
                nullString = field.IsNull ? "\t\t\t\tif (!dataReader.IsDBNull(" + i + "))\r\n\t\t\t\t\t" : "\t\t\t\t";
                switch (field.DotNetType.Replace("?", "").ToLower())
                {
                case "string":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetString(" + i.ToString() + ");\r\n");
                    break;

                case "guid":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetGuid(" + i.ToString() + ");\r\n");
                    break;

                case "long":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetInt64(" + i.ToString() + ");\r\n");
                    break;

                case "int":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetInt32(" + i.ToString() + ");\r\n");
                    break;

                case "short":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetInt16(" + i.ToString() + ");\r\n");
                    break;

                case "byte":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetInt16(" + i.ToString() + ");\r\n");
                    break;

                case "decimal":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetDecimal(" + i.ToString() + ");\r\n");
                    break;

                case "float":
                    data.Append(nullString + "\tmodel." + field.Name + " = dataReader.GetFloat(" + i.ToString() + ");\r\n");
                    break;

                case "double":
                    data.Append(nullString + "\tmodel." + field.Name + " = dataReader.GetDouble(" + i.ToString() + ");\r\n");
                    break;

                case "datetime":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetDateTime(" + i.ToString() + ");\r\n");
                    break;

                case "bool":
                    data.Append(nullString + "model." + field.Name + " = dataReader.GetBoolean(" + i.ToString() + ");\r\n");
                    break;
                }
                i++;
            }
            data.Append("\t\t\t\tList.Add(model);\r\n");
            data.Append("\t\t\t}\r\n");
            data.Append("\t\t\treturn List;\r\n");
            data.Append("\t\t}\r\n");

            return(data.ToString());
        }