using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Arista.CodeGenerate.Parse;
using Arista.Util;
using Arista.Data;

namespace Arista.CodeGenerate
{
  public partial class Class1 : CSharpSourlet
  {
    public override void Generate(SourletRequest request, SourletResponse response)
    {
        if(request == null)
        {
            throw new NullReferenceException();
        }
        if(response == null)
        {
            throw new NullReferenceException();
        }
        this._request = request;
        this._response = response;
        this.BeginGenerate();
        Response.Output.WriteLine("using System;");
        Response.Output.WriteLine("using System.Collections.Generic;");
        Response.Output.WriteLine("using System.Text;");
        Response.Output.WriteLine("using System.Data;");
        Response.Output.WriteLine("using System.Data.Common;");
        Response.Output.WriteLine("using System.ComponentModel;");
        Response.Output.WriteLine("using System.Transactions;");
        Response.Output.WriteLine("");
        Response.Output.WriteLine("using Befri.Query;");
        Response.Output.WriteLine("using Befri.Data.SqlClient;");
        Response.Output.WriteLine("using Befri.Goldhoo.Models;");
        Response.Output.WriteLine("using Befri.Goldhoo.DataAccess;");
        Response.Output.WriteLine("");
        Response.Output.WriteLine("namespace Befri.Goldhoo.Services");
        Response.Output.WriteLine("{");
        Response.Output.Write("    /// ");
        Response.Output.WriteLine("<summary>");
        Response.Output.Write("    /// 名    称: ");
        Response.Output.Write( Table.Text );
        Response.Output.WriteLine("管理服务类");
        Response.Output.WriteLine("    /// 开发人员: ");
        Response.Output.Write("    /// 开发日期: ");
        Response.Output.Write( DateTime.Today.ToLongDateString() );
        Response.Output.WriteLine("");
        Response.Output.Write("    /// ");
        Response.Output.WriteLine("</summary>");
        Response.Output.Write("    public class ");
        Response.Output.Write( Table.AliasName );
        Response.Output.Write("Service : DataService, I");
        Response.Output.Write( Table.AliasName );
        Response.Output.WriteLine("Service");
        Response.Output.WriteLine("    {");
        Response.Output.Write("        private ");
        Response.Output.Write( Table.AliasName );
        Response.Output.Write("DAO _");
        Response.Output.Write( Table.aliasName );
        Response.Output.Write("DAO = new ");
        Response.Output.Write( Table.AliasName );
        Response.Output.WriteLine("DAO();");
        Response.Output.WriteLine("        ");
        Response.Output.Write("        /// ");
        Response.Output.WriteLine("<summary>");
        Response.Output.Write("        /// 返回满足查询条件的");
        Response.Output.Write( Table.Text );
        Response.Output.WriteLine("实体列表");
        Response.Output.Write("        /// ");
        Response.Output.WriteLine("</summary>");
        Response.Output.Write("        /// ");
        Response.Output.Write("<param name=\"param\">查询条件");
        Response.Output.WriteLine("</param>");
        Response.Output.Write("        /// ");
        Response.Output.Write("<returns>");
        Response.Output.Write( Table.Text );
        Response.Output.Write("实体列表");
        Response.Output.WriteLine("</returns>");
        Response.Output.Write("        public IList");
        Response.Output.Write("<");
        Response.Output.Write( Table.AliasName );
        Response.Output.Write("> Get");
        Response.Output.Write( Table.AliasName );
        Response.Output.WriteLine("s(QueryParameter param)");
        Response.Output.WriteLine("        {");
        Response.Output.Write("            return _");
        Response.Output.Write( Table.aliasName );
        Response.Output.Write("DAO.Get");
        Response.Output.Write( Table.AliasName );
        Response.Output.WriteLine("s(param);");
        Response.Output.WriteLine("        }");
        Response.Output.WriteLine("       ");
        Response.Output.Write("        /// ");
        Response.Output.WriteLine("<summary>");
        Response.Output.Write("        /// 创建");
        Response.Output.Write( Table.Text );
        Response.Output.WriteLine("记录");
        Response.Output.Write("        /// ");
        Response.Output.WriteLine("</summary>");
        Response.Output.Write("        /// ");
        Response.Output.Write("<param name=\"");
        Response.Output.Write( Table.aliasName );
        Response.Output.Write("\">");
        Response.Output.Write( Table.Text );
        Response.Output.Write("对象");
        Response.Output.WriteLine("</param>");
        Response.Output.Write("        /// ");
        Response.Output.Write("<returns>");
        Response.Output.WriteLine("</returns>");
        Response.Output.Write("        public int Create");
        Response.Output.Write( Table.AliasName );
        Response.Output.Write("(");
        Response.Output.Write( Table.AliasName );
        Response.Output.Write(" ");
        Response.Output.Write( Table.aliasName );
        Response.Output.WriteLine(")");
        Response.Output.WriteLine("        {");
        Response.Output.Write("        	return _");
        Response.Output.Write( Table.aliasName );
        Response.Output.Write("DAO.Insert(");
        Response.Output.Write( Table.aliasName );
        Response.Output.WriteLine(");");
        Response.Output.WriteLine("        }");
        Response.Output.WriteLine("                  ");
        Response.Output.Write("        /// ");
        Response.Output.WriteLine("<summary>");
        Response.Output.Write("        /// 更新");
        Response.Output.Write( Table.Text );
        Response.Output.WriteLine("记录");
        Response.Output.Write("        /// ");
        Response.Output.WriteLine("</summary>");
        Response.Output.Write("        /// ");
        Response.Output.Write("<param name=\"");
        Response.Output.Write( Table.aliasName );
        Response.Output.Write("\">");
        Response.Output.Write( Table.Text );
        Response.Output.Write("对象");
        Response.Output.WriteLine("</param>");
        Response.Output.Write("        /// ");
        Response.Output.Write("<returns>受影响的记录数");
        Response.Output.WriteLine("</returns>");
        Response.Output.Write("        public int Update");
        Response.Output.Write( Table.AliasName );
        Response.Output.Write("(");
        Response.Output.Write( Table.AliasName );
        Response.Output.Write(" ");
        Response.Output.Write( Table.aliasName );
        Response.Output.WriteLine(")");
        Response.Output.WriteLine("        {");
        Response.Output.Write("        	return _");
        Response.Output.Write( Table.aliasName );
        Response.Output.Write("DAO.Update(");
        Response.Output.Write( Table.aliasName );
        Response.Output.WriteLine(");");
        Response.Output.WriteLine("        }");
        Response.Output.WriteLine("        ");
        Response.Output.Write("        /// ");
        Response.Output.WriteLine("<summary>");
        Response.Output.Write("        /// 删除");
        Response.Output.Write( Table.Text );
        Response.Output.WriteLine("记录");
        Response.Output.Write("        /// ");
        Response.Output.WriteLine("</summary>");
        Response.Output.Write("        ");
 foreach(Arista.Data.ColumnSchema column in Table.Keys){        Response.Output.Write("/// ");
        Response.Output.Write("<param name=\"");
        Response.Output.Write( column.aliasName );
        Response.Output.Write("\">");
        Response.Output.Write( column.Text );
        Response.Output.Write("</param> ");
 }         Response.Output.WriteLine("");
        Response.Output.Write("        /// ");
        Response.Output.Write("<returns>受影响的记录数");
        Response.Output.WriteLine("</returns>");
        Response.Output.Write("        public int Delete");
        Response.Output.Write( Table.AliasName );
        Response.Output.Write("(");
        Response.Output.Write( KeyParamsText );
        Response.Output.WriteLine(")");
        Response.Output.WriteLine("        {");
        Response.Output.Write("        	return _");
        Response.Output.Write( Table.aliasName );
        Response.Output.Write("DAO.Delete(");
        Response.Output.Write( KeyParamsValueText );
        Response.Output.WriteLine(");");
        Response.Output.WriteLine("        }");
        Response.Output.WriteLine("          ");
        Response.Output.WriteLine("    }");
        Response.Output.Write("}");
        this.EndGenerate();


     }
  }
}