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

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

            StringBuilder data = new StringBuilder();

            data.Append("\t\t/// <summary>\r\n");
            data.Append("\t\t/// 添加记录\r\n");
            data.Append("\t\t/// </summary>\r\n");
            data.Append("\t\t/// <param name=\"model\">" + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Model + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "." + param.ClassName + "实体类</param>\r\n");
            data.Append("\t\t/// <returns>" + (HasIdentity ? "新增记录的ID" : "操作所影响的行数") + "</returns>\r\n");
            data.Append("\t\tpublic " + (HasIdentity ? Identitys.First().DotNetType : "int") + " Add(" + param.NameSpace + (string.IsNullOrEmpty(param.NameSpace) ? "" : ".") + param.CNSC.Model + (string.IsNullOrEmpty(param.NameSpace1) ? "" : "." + param.NameSpace1) + "." + param.ClassName + " model)\r\n");
            data.Append("\t\t{\r\n");

            data.Append("\t\t\tstring sql = @\"INSERT INTO " + param.TableName);
            data.Append("\r\n\t\t\t\t(");
            foreach (var field in NotIdeneitys)
            {
                data.Append(field.Name);
                data.Append(field.Name != NotIdeneitys.Last().Name ? "," : "");
            }
            data.Append(") \r\n");
            data.Append("\t\t\t\tVALUES(");
            foreach (var field in NotIdeneitys)
            {
                data.Append(createInstance.GetParamsName(field.Name));
                data.Append(field.Name != NotIdeneitys.Last().Name ? "," : "");
            }
            data.Append(")" + (HasIdentity ? ";\r\n\t\t\t\tSELECT " + createInstance.GetIdentityMethod() + ";" : "") + "\";\r\n");
            data.Append("\t\t\t" + createInstance.GetParamsType() + "[] parameters = new " + createInstance.GetParamsType() + "[]{\r\n");
            foreach (var field in NotIdeneitys)
            {
                if (field.IsNull)
                {
                    data.Append("\t\t\t\tmodel." + field.Name + " == null ? ");
                    data.Append("new " + createInstance.GetParamsType() + "(\"" + createInstance.GetParamsName1(field.Name) + "\", " + field.DotNetSqlType + (field.Length != -1 ? ", " + field.Length.ToString() : ", -1") + ") { Value = DBNull.Value } : ");
                    data.Append("new " + createInstance.GetParamsType() + "(\"" + createInstance.GetParamsName1(field.Name) + "\", " + field.DotNetSqlType + (field.Length != -1 ? ", " + field.Length.ToString() : ", -1") + ") { Value = model." + field.Name + " }");
                }
                else
                {
                    data.Append("\t\t\t\tnew " + createInstance.GetParamsType() + "(\"" + createInstance.GetParamsName1(field.Name) + "\", " + field.DotNetSqlType + (field.Length != -1 ? ", " + field.Length.ToString() : ", -1") + ")");
                    data.Append("{ Value = model." + field.Name + " }");
                }
                data.Append(field.Name != NotIdeneitys.Last().Name ? "," : "");
                data.Append("\r\n");
            }

            data.Append("\t\t\t};\r\n");
            //data.Append("\t\t\tDBHelper dbHelper = new DBHelper();\r\n");
            if (HasIdentity)
            {
                data.Append("\t\t\t" + Identitys.First().DotNetType + " maxID;\r\n");
                data.Append("\t\t\treturn " + Identitys.First().DotNetType + ".TryParse(dbHelper.ExecuteScalar(sql, parameters),out maxID) ? maxID : -1;\r\n");
            }
            else
            {
                data.Append("\t\t\treturn dbHelper.Execute(sql, parameters);\r\n");
            }
            data.Append("\t\t}\r\n");

            return(data.ToString());
        }