using System;
using System.Collections.Generic;
using System.Text;
using TierGenerator.Common.Util.Model;
using TierGenerator.Common.Util.Generate;
using System.IO;
namespace TierGenerator.Common.Util.MsSql.ObjectGenerate
{
internal class DalBuilder
{
#region Class Members
private TierModel tierModel;
private string serviceName;
#endregion
public DalBuilder(TierModel tierModel)
{
this.tierModel = tierModel;
this.serviceName = ServiceBuilderHelper.GetServiceNameByNamespace(tierModel.ServiceName);
}
#region Public Properties
public TierModel TierModel
{
get { return tierModel; }
}
public string ServiceName
{
get { return serviceName; }
}
#endregion
#region Public Methods
public void Generate()
{
ProjectItem dalProjectItem = GenerateDalService();
ProjectItem dalProjectItemTg = GenerateDalService_TG();
dalProjectItemTg.Parent = dalProjectItem;
dalProjectItemTg.Dependency = ProjectItemDependencies.Code;
string csprojPath = ServiceBuilderHelper.GetCsprojFile(this.TierModel.Settings.DalPath);
ServiceBuilderHelper.UpdateCsprojFile(csprojPath, dalProjectItemTg);
ServiceBuilderHelper.UpdateCsprojFile(csprojPath, dalProjectItem);
}
#endregion
#region Helper Methods
private ProjectItem GenerateDalService()
{
string dalFileName = String.Concat(ServiceBuilderHelper.MakeNamespaceFolder(TierModel.Settings.DalPath, TierModel.Namespace), ServiceName, "Dal.cs");
if (File.Exists(dalFileName))
{
return null;
}
StringBuilder dalService = GenerateEmptyDalText();
ServiceBuilderHelper.SaveToFile(dalFileName, dalService.ToString());
return new ProjectItem(
Path.GetFileName(dalFileName),
String.Concat(this.TierModel.Namespace, "\\", Path.GetFileName(dalFileName)),
ProjectItemTypes.Compile
);
}
private ProjectItem GenerateDalService_TG()
{
StringBuilder dalService = new StringBuilder(20000);
string dalFileName = String.Concat(ServiceBuilderHelper.MakeNamespaceFolder(TierModel.Settings.DalPath, TierModel.Namespace), ServiceName, "Dal.ntg.cs");
GenerateDalServiceHeader_TG(dalService);
GenerateDalServiceConstant_TG(dalService);
GenerateInfoDalService_TG(dalService);
GenerateSelectUdfDalService_TG(dalService);
GenerateUpdateUdfDalService_TG(dalService);
GenerateDeleteUdfDalService_TG(dalService);
GenerateDalServiceFooter_TG(dalService);
ServiceBuilderHelper.SaveToFile(dalFileName, dalService.ToString());
return new ProjectItem(
Path.GetFileName(dalFileName),
String.Concat(this.TierModel.Namespace, "\\", Path.GetFileName(dalFileName)),
ProjectItemTypes.Compile
);
}
private void GenerateDalServiceHeader_TG(StringBuilder dalService)
{
dalService.AppendLine("using System;");
dalService.AppendLine("using System.Text;");
dalService.AppendLine("using System.Data;");
dalService.AppendLine("using System.Data.Common;");
dalService.AppendLine("using System.Data.SqlClient;");
dalService.AppendLine("using System.Collections.Generic;");
dalService.AppendLine();
dalService.AppendLine(String.Format("using {0}.Common.Data;", TierModel.Solution));
dalService.AppendLine(String.Format("using {0}.Common.Exception;", TierModel.Solution));
dalService.AppendLine(String.Format("using {0}.Model.{1};", TierModel.Solution, TierModel.Namespace));
dalService.AppendLine(String.Format("using {0}.MsSqlDal.Util;", TierModel.Solution));
dalService.AppendLine(String.Format("using {0}.IDal;", TierModel.Solution));
dalService.AppendLine(String.Format("using {0}.IDal.{1};", TierModel.Solution, TierModel.Namespace));
dalService.AppendLine(String.Format("using {0}.Common.Util;", TierModel.Solution));
if (TierModel.DeclarationList.Count > 0)
{
dalService.Append(TierModel.AdditionalUsingString);
}
dalService.AppendLine();
// namespace and class declaration
dalService.AppendLine(String.Format("namespace {0}.MsSqlDal.{1}", TierModel.Solution, TierModel.Namespace));
dalService.AppendLine("{");
dalService.AppendLine(String.Format("\tpublic partial class {0}Dal : I{0}Dal", ServiceName));
dalService.AppendLine("\t{");
dalService.AppendLine();
// public constructor
dalService.AppendLine(String.Format("\t\tpublic {0}Dal()", ServiceName));
dalService.AppendLine("\t\t{");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
}
private void GenerateDalServiceConstant_TG(StringBuilder dalService)
{
dalService.AppendLine("\t\t#region Sql queries constants");
dalService.AppendLine();
GenerateInfoDalServiceConstant_TG(dalService);
GenerateUdfDalServiceConstant_TG(dalService);
dalService.AppendLine("\t\t#endregion");
dalService.AppendLine();
}
private void GenerateInfoDalService_TG(StringBuilder dalService)
{
foreach (ItemInfo item in TierModel.ItemInfoList)
{
#region base select by key field method
if (item.SelectMethod.NeedToCreate && item.SelectMethod.DalAccess)
{
string selectByKeyFieldConstant = ServiceBuilderHelper.GetSelectDalQueryConstantName(item.ClassName, item.KeyColumn.CSharpColumn.Name);
// Get Model instance from database by key field
dalService.AppendLine(String.Format("\t\tpublic {0}Model Get{0}By{1}(ISession session, {2} {3})", item.ClassName, ServiceBuilderHelper.Capitalize(item.KeyColumn.CSharpColumn.Name), CSharpTypeHelper.GetCSharpTypeName(item.KeyColumn.CSharpColumn), ServiceBuilderHelper.Decapitalize(item.KeyColumn.CSharpColumn.Name)));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\tSqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter({0});", selectByKeyFieldConstant));
dalService.AppendLine("\t\t\tif (prm == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprm = new SqlParameter(\"{0}\", SqlDbType.{1}, {2});", ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(item.KeyColumn.DbColumn.Type), item.KeyColumn.DbColumn.Length));
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameter({0}, prm);", selectByKeyFieldConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\tprm.Value = {0};", ServiceBuilderHelper.Decapitalize(item.KeyColumn.CSharpColumn.Name)));
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prm);", selectByKeyFieldConstant));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.HasRows)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\treturn Get{0}ModelFromDataReader(reader, true);", ServiceBuilderHelper.Capitalize(item.ClassName)));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t\treturn null;");
//dalService.AppendLine("\t\t\t\tthrow new ObjectNotFoundException(\"\");");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
}
#endregion
#region base select blob by key field methods
if (item.HasBlob)
{
foreach (ColumnInfo column in item.ColumnList)
{
if (column.IsBlob && column.CSharpColumn.NeedSeparateLoad)
{
string selectBlobByKeyFieldConstant = ServiceBuilderHelper.GetSelectOneColumnDalQueryConstantName(item.ClassName, column.DbColumn.Name, item.KeyColumn.CSharpColumn.Name);
// Get Model instance from database by key field
dalService.AppendLine(String.Format("\t\tpublic byte[] Get{0}{1}By{2}(ISession session, {3} {4})", item.ClassName, column.CSharpColumn.Name, ServiceBuilderHelper.Capitalize(item.KeyColumn.CSharpColumn.Name), CSharpTypeHelper.GetCSharpTypeName(item.KeyColumn.CSharpColumn), ServiceBuilderHelper.Decapitalize(item.KeyColumn.CSharpColumn.Name)));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\tSqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter({0});", selectBlobByKeyFieldConstant));
dalService.AppendLine("\t\t\tif (prm == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(GetDeclareSingleParameterFromModel("prm", item.KeyColumn));
//dalService.AppendLine(String.Format("\t\t\t\tprm = new SqlParameter(\"{0}\", SqlDbType.{1}, {2});", ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(item.KeyColumn.DbColumn.Type), item.KeyColumn.DbColumn.Length));
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameter({0}, prm);", selectBlobByKeyFieldConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\tprm.Value = {0};", ServiceBuilderHelper.Decapitalize(item.KeyColumn.CSharpColumn.Name)));
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prm);", selectBlobByKeyFieldConstant));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.HasRows)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Read();");
dalService.AppendLine(String.Format("\t\t\t\treturn DataConvertHelper.GetBinaryValue(reader[\"{0}\"]{1});", column.DbColumn.Name, column.CSharpColumn.IsGZipped ? ", true" : ""));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t\treturn null;");
//dalService.AppendLine("\t\t\t\treturn new byte[] {};");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
}
}
}
#endregion base select blob by key methods
#region base delete method
if (item.DeleteMethod.NeedToCreate && item.DeleteMethod.DalAccess)
{
string deleteByKeyFieldConstant = ServiceBuilderHelper.GetDeleteDalQueryConstantName(item.ClassName, item.KeyColumn.CSharpColumn.Name);
dalService.AppendLine(String.Format("\t\tpublic void Delete{0}By{1}(ISession session, {2} {3})", item.ClassName, ServiceBuilderHelper.Capitalize(item.KeyColumn.CSharpColumn.Name), CSharpTypeHelper.GetCSharpTypeName(item.KeyColumn.CSharpColumn), ServiceBuilderHelper.Decapitalize(item.KeyColumn.CSharpColumn.Name)));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\tSqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter({0});", deleteByKeyFieldConstant));
dalService.AppendLine("\t\t\tif (prm == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprm = new SqlParameter(\"{0}\", SqlDbType.{1}, {2});", ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(item.KeyColumn.DbColumn.Type), item.KeyColumn.DbColumn.Length));
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameter({0}, prm);", deleteByKeyFieldConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\tprm.Value = {0};", ServiceBuilderHelper.Decapitalize(item.KeyColumn.CSharpColumn.Name)));
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prm);", deleteByKeyFieldConstant));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\tint error = DataConvertHelper.GetInt32Value(reader[0]);");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (error != 0)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t throw new SqlDalException(String.Concat(\"MS SQL Server error code = \", error.ToString()));");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
}
#endregion
#region base insert method
if (item.InsertMethod.NeedToCreate && item.InsertMethod.DalAccess)
{
int index = 0;
string insertConstant = ServiceBuilderHelper.GetInsertDalQueryConstantName(item.ClassName);
if (MsSqlColumnTypeEnum.UNIQUEIDENTIFIER == (MsSqlColumnTypeEnum)item.KeyColumn.DbColumn.Type.Type)
{
#region key column - uniqueidentifier
int paramsCount = item.KeyColumn.NeedToGenerate ? item.UpdatebleCoulumnsCount - 1 : item.UpdatebleCoulumnsCount;
dalService.AppendLine(String.Format("\t\tpublic void Insert{0}(ISession session, {0}Model _{1})", item.ClassName, ServiceBuilderHelper.Decapitalize(item.ClassName)));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\tSqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet({0});", insertConstant));
dalService.AppendLine("\t\t\tif (prms == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprms = new SqlParameter[{0}];", paramsCount.ToString()));
if (!item.KeyColumn.NeedToGenerate)
{
// set key value
dalService.AppendLine(this.GetDeclareMiltipleParameterFromModel("prms", item.KeyColumn, index));
//dalService.AppendLine(String.Format("\t\t\t\tprms[{0}] = new SqlParameter(\"{1}\", SqlDbType.{2}, {3});", index.ToString(), ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(item.KeyColumn.DbColumn.Type), item.KeyColumn.DbColumn.Length));
index = 1;
}
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey && !column.IsReadOnly)
{
dalService.AppendLine(this.GetDeclareMiltipleParameterFromModel("prms", column, index));
index++;
}
}
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameterSet({0}, prms);", insertConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
index = 0;
if (!item.KeyColumn.NeedToGenerate)
{
// set key value
dalService.AppendLine(GetFillParameterSetFromModel(index, item.ClassName, item.KeyColumn));
index = 1;
}
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey && !column.IsReadOnly)
{
dalService.AppendLine(GetFillParameterSetFromModel(index, item.ClassName, column));
index++;
}
}
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prms);", insertConstant));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t{");
string readerProperty = "reader[0]";
dalService.AppendLine(String.Format("\t\t\t\t_{0}.{1} = {2};", ServiceBuilderHelper.Decapitalize(item.ClassName), ServiceBuilderHelper.Capitalize(item.KeyColumn.CSharpColumn.Name), MsSqlColumnHelper.GetMsSqlValue(item.KeyColumn, readerProperty)));
dalService.AppendLine("\t\t\t\tint error = DataConvertHelper.GetInt32Value(reader[1]);");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (error != 0)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\tthrow new SqlDalException(String.Concat(\"MS SQL Server error code = \", error.ToString()));");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion key column - uniqueidentifier
}
else
{
#region key column - another db type
dalService.AppendLine(String.Format("\t\tpublic void Insert{0}(ISession session, {0}Model _{1})", item.ClassName, ServiceBuilderHelper.Decapitalize(item.ClassName)));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\tSqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet({0});", insertConstant));
dalService.AppendLine("\t\t\tif (prms == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprms = new SqlParameter[{0}];", (item.UpdatebleCoulumnsCount - 1).ToString()));
dalService.AppendLine(this.GetDeclareMiltipleParameterFromModel("prms", item.KeyColumn, index));
//dalService.AppendLine(String.Format("\t\t\t\tprms[{0}] = new SqlParameter(\"{1}\", SqlDbType.{2}, {3});", index.ToString(), ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(item.KeyColumn.DbColumn.Type), item.KeyColumn.DbColumn.Length));
index += 1;
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey && !column.IsReadOnly)
{
dalService.AppendLine(this.GetDeclareMiltipleParameterFromModel("prms", column, index));
//dalService.AppendLine(String.Format("\t\t\t\tprms[{0}] = new SqlParameter(\"{1}\", SqlDbType.{2}, {3});", index.ToString(), ServiceBuilderHelper.Capitalize(column.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type), column.DbColumn.Length));
index++;
}
}
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameterSet({0}, prms);", insertConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
index = 0;
dalService.AppendLine(GetFillParameterSetFromModel(index, item.ClassName, item.KeyColumn));
index += 1;
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey && !column.IsReadOnly)
{
dalService.AppendLine(GetFillParameterSetFromModel(index, item.ClassName, column));
index++;
}
}
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prms);", insertConstant));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t{");
//string readerProperty = "reader[0]";
//dalService.AppendLine(String.Format("\t\t\t\t_{0}.{1} = {2};", ServiceBuilderHelper.Decapitalize(item.ClassName), ServiceBuilderHelper.Capitalize(item.KeyColumn.CSharpColumn.Name), MsSqlColumnHelper.GetMsSqlValue(item.KeyColumn.DbColumn.Type, readerProperty)));
dalService.AppendLine("\t\t\t\tint error = DataConvertHelper.GetInt32Value(reader[0]);");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (error != 0)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\tthrow new SqlDalException(String.Concat(\"MS SQL Server error code = \", error.ToString()));");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion key column - another db type
}
}
#endregion
#region base update method
if (item.UpdateMethod.NeedToCreate && item.UpdateMethod.DalAccess)
{
int index = 1;
string updateConstant = ServiceBuilderHelper.GetUpdateDalQueryConstantName(item.ClassName);
dalService.AppendLine(String.Format("\t\tpublic void Update{0}(ISession session, {0}Model _{1})", item.ClassName, ServiceBuilderHelper.Decapitalize(item.ClassName)));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\tSqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet({0});", updateConstant));
dalService.AppendLine("\t\t\tif (prms == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprms = new SqlParameter[{0}];", item.UpdatebleCoulumnsCount.ToString()));
dalService.AppendLine(this.GetDeclareMiltipleParameterFromModel("prms", item.KeyColumn, 0));
//dalService.AppendLine(String.Format("\t\t\t\tprms[0] = new SqlParameter(\"{0}\", SqlDbType.{1}, {2});", ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(item.KeyColumn.DbColumn.Type), item.KeyColumn.DbColumn.Length));
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey && !column.IsReadOnly)
{
dalService.AppendLine(this.GetDeclareMiltipleParameterFromModel("prms", column, index));
//dalService.AppendLine(String.Format("\t\t\t\tprms[{0}] = new SqlParameter(\"{1}\", SqlDbType.{2}, {3});", index.ToString(), ServiceBuilderHelper.Capitalize(column.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type), column.DbColumn.Length));
index++;
}
}
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameterSet({0}, prms);", updateConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
index = 0;
dalService.AppendLine(GetFillParameterSetFromModel(index++, item.ClassName, item.KeyColumn));
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey && !column.IsReadOnly)
{
dalService.AppendLine(GetFillParameterSetFromModel(index, item.ClassName, column));
index++;
}
}
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prms);", updateConstant));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\tint error = DataConvertHelper.GetInt32Value(reader[0]);");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (error != 0)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\tthrow new SqlDalException(String.Concat(\"MS SQL Server error code = \", error.ToString()));");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
}
#endregion
#region fill model instance from SqlDataReader
dalService.AppendLine(String.Format("\t\tinternal static {0}Model Get{0}ModelFromDataReader(SqlDataReader reader, bool needReaderClose)", item.ClassName));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\t{0}Model _{1} = null;", item.ClassName, ServiceBuilderHelper.Decapitalize(item.ClassName)));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (!reader.IsClosed)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Read();");
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\t\t{0}", GetFillInstanceConstructorFromDataReader(String.Concat("_", ServiceBuilderHelper.Decapitalize(item.ClassName)), item.KeyColumn)));
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey &&
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
dalService.AppendLine(String.Format("\t\t\t\t{0}", GetFillInstanceConstructorFromDataReader(String.Concat("_", ServiceBuilderHelper.Decapitalize(item.ClassName)), column)));
}
}
dalService.AppendLine();
dalService.Append(String.Format("\t\t\t\t_{1} = new {0}Model(", item.ClassName, ServiceBuilderHelper.Decapitalize(item.ClassName)));
dalService.Append(String.Format("_{0}", ServiceBuilderHelper.Decapitalize(item.KeyColumn.CSharpColumn.Name)));
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey &&
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
dalService.Append(String.Format(", _{0}", ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name)));
}
else if (column.IsBlob && column.CSharpColumn.NeedSeparateLoad)
{
dalService.Append(", null");
}
}
dalService.AppendLine(");");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (needReaderClose)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\t_{1} = new {0}Model();", item.ClassName, ServiceBuilderHelper.Decapitalize(item.ClassName)));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\treturn _{0};", ServiceBuilderHelper.Decapitalize(item.ClassName)));
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion
#region fill info model list from SqlDataReader
dalService.AppendLine(String.Format("\t\tinternal static IList<{0}Model> Get{0}ModelListFromDataReader(SqlDataReader reader, bool needReaderClose)", item.ClassName));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\tIList<{0}Model> list = new List<{0}Model>();", item.ClassName));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (!reader.IsClosed)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\twhile (reader.Read())");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\t\t{0}", GetFillInstanceConstructorFromDataReader(String.Concat("_", ServiceBuilderHelper.Decapitalize(item.ClassName)), item.KeyColumn)));
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey &&
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
dalService.AppendLine(String.Format("\t\t\t\t\t{0}", GetFillInstanceConstructorFromDataReader(String.Concat("_", ServiceBuilderHelper.Decapitalize(item.ClassName)), column)));
}
}
dalService.AppendLine();
dalService.Append(String.Format("\t\t\t\t\t{0}Model item = new {0}Model(", item.ClassName));
dalService.Append(String.Format("_{0}", ServiceBuilderHelper.Decapitalize(item.KeyColumn.CSharpColumn.Name)));
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsPrimaryKey &&
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
dalService.Append(String.Format(", _{0}", ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name)));
}
else if (column.IsBlob && column.CSharpColumn.NeedSeparateLoad)
{
dalService.Append(", null");
}
}
dalService.AppendLine(");");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\t\tlist.Add(item);");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (needReaderClose)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine("\t\t\treturn list;");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion
}
foreach (ListItem list in TierModel.ListItemList)
{
#region fill list model list from SqlDataReader
dalService.AppendLine(String.Format("\t\tinternal static IList<{0}Model> Get{0}ModelFromDataReader(SqlDataReader reader, bool needReaderClose)", list.ClassName));
dalService.AppendLine("\t\t{");
dalService.AppendLine(String.Format("\t\t\tIList<{0}Model> list = new List<{0}Model>();", list.ClassName));
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (!reader.IsClosed)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\twhile (reader.Read())");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\t\t{0}", GetFillInstanceConstructorFromDataReader(String.Concat("_", ServiceBuilderHelper.Decapitalize(list.ClassName)), list.KeyColumn)));
foreach (ColumnInfo column in list.ColumnList)
{
if (!column.IsPrimaryKey &&
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
dalService.AppendLine(String.Format("\t\t\t\t\t{0}", GetFillInstanceConstructorFromDataReader(String.Concat("_", ServiceBuilderHelper.Decapitalize(list.ClassName)), column)));
}
}
dalService.AppendLine();
dalService.Append(String.Format("\t\t\t\t\t{0}Model item = new {0}Model(", list.ClassName));
dalService.Append(String.Format("_{0}", ServiceBuilderHelper.Decapitalize(list.KeyColumn.CSharpColumn.Name)));
foreach (ColumnInfo column in list.ColumnList)
{
if (!column.IsPrimaryKey &&
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
dalService.Append(String.Format(", _{0}", ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name)));
}
else if (column.IsBlob && column.CSharpColumn.NeedSeparateLoad)
{
dalService.Append(", null");
}
}
dalService.AppendLine(");");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\t\tlist.Add(item);");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (needReaderClose)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine("\t\t\treturn list;");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion
#region fill list page from SqlDataReader
dalService.AppendLine(String.Format("\t\tinternal static ListPage Get{0}ListPage(SqlDataReader reader, ListQuery query)", list.ClassName));
dalService.AppendLine("\t\t{");
dalService.AppendLine("\t\t\tListPage page = new ListPage();");
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (!reader.IsClosed)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\tpage.TotalRowCount = DataConvertHelper.GetInt32Value(reader[0]);");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t\telse");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\tthrow new SqlDalException(\" Sql Exception \");");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\treader.NextResult();");
dalService.AppendLine("\t\t\t\twhile (reader.Read())");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\t\t{0}", GetFillInstanceConstructorFromDataReader(String.Concat("_", ServiceBuilderHelper.Decapitalize(list.ClassName)), list.KeyColumn)));
foreach (ColumnInfo column in list.ColumnList)
{
if (!column.IsPrimaryKey &&
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
dalService.AppendLine(String.Format("\t\t\t\t\t{0}", GetFillInstanceConstructorFromDataReader(String.Concat("_", ServiceBuilderHelper.Decapitalize(list.ClassName)), column)));
}
}
dalService.AppendLine();
dalService.Append(String.Format("\t\t\t\t\t{0}Model row = new {0}Model(", list.ClassName));
dalService.Append(String.Format("_{0}", ServiceBuilderHelper.Decapitalize(list.KeyColumn.CSharpColumn.Name)));
foreach (ColumnInfo column in list.ColumnList)
{
if (!column.IsPrimaryKey &&
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
dalService.Append(String.Format(", _{0}", ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name)));
}
else if (column.IsBlob && column.CSharpColumn.NeedSeparateLoad)
{
dalService.Append(", null");
}
}
dalService.AppendLine(");");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\t\tpage.AddRow(row);");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine("\t\t\treturn page;");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion
}
}
private void GenerateDalServiceFooter_TG(StringBuilder dalService)
{
// closing patterns for class and namespace declarations
dalService.AppendLine("\t}");
dalService.AppendLine("}");
}
private StringBuilder GenerateEmptyDalText()
{
StringBuilder dalService = new StringBuilder(2000);
dalService.AppendLine("using System;");
dalService.AppendLine("using System.Text;");
dalService.AppendLine("using System.Data;");
dalService.AppendLine("using System.Data.Common;");
dalService.AppendLine("using System.Data.SqlClient;");
dalService.AppendLine("using System.Collections.Generic;");
dalService.AppendLine();
dalService.AppendLine(String.Format("using {0}.Common.Data;", TierModel.Solution));
dalService.AppendLine(String.Format("using {0}.Common.Exception;", TierModel.Solution));
dalService.AppendLine(String.Format("using {0}.Model.{1};", TierModel.Solution, TierModel.Namespace));
dalService.AppendLine(String.Format("using {0}.MsSqlDal.Util;", TierModel.Solution));
dalService.AppendLine(String.Format("using {0}.IDal;", TierModel.Solution));
dalService.AppendLine(String.Format("using {0}.IDal.{1};", TierModel.Solution, TierModel.Namespace));
dalService.AppendLine(String.Format("using {0}.Common.Util;", TierModel.Solution));
dalService.AppendLine();
// namespace and class declaration
dalService.AppendLine(String.Format("namespace {0}.MsSqlDal.{1}", TierModel.Solution, TierModel.Namespace));
dalService.AppendLine("{");
dalService.AppendLine(String.Format("\tpublic partial class {0}Dal : I{0}Dal", ServiceName));
dalService.AppendLine("\t{");
dalService.AppendLine();
// closing patterns for class and namespace declarations
dalService.AppendLine("\t}");
dalService.AppendLine("}");
return dalService;
}
private void GenerateInfoDalServiceConstant_TG(StringBuilder dalService)
{
foreach (ItemInfo item in TierModel.ItemInfoList)
{
#region base select method
if (item.SelectMethod.NeedToCreate && item.SelectMethod.DalAccess)
{
string selectFrom = !String.IsNullOrEmpty(item.DbViewName) ? item.DbViewName : item.DbTableName;
string selectByKeyFieldConstant = ServiceBuilderHelper.GetSelectDalQueryConstantName(item.ClassName, item.KeyColumn.CSharpColumn.Name);
StringBuilder columnsToSelect = new StringBuilder(500);
foreach (ColumnInfo column in item.ColumnList)
{
if (!column.IsBlob ||
(!column.IsBlob || (column.IsBlob && !column.CSharpColumn.NeedSeparateLoad)))
{
if (columnsToSelect.Length > 0)
{
columnsToSelect.Append(", ");
}
columnsToSelect.Append(column.DbColumn.Name);
}
}
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", selectByKeyFieldConstant));
dalService.AppendLine(String.Format("\t\t\t@\"SELECT {0} FROM [{1}] WHERE {2} = @{3}\";", columnsToSelect.ToString(), selectFrom, item.KeyColumn.DbColumn.Name, ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name)));
dalService.AppendLine();
}
#endregion base select method
#region generate own select method for each blob field in a table
if (item.HasBlob)
{
foreach (ColumnInfo column in item.ColumnList)
{
if (column.IsBlob && column.CSharpColumn.NeedSeparateLoad)
{
string selectBlobByKeyFieldConstant = ServiceBuilderHelper.GetSelectOneColumnDalQueryConstantName(item.ClassName, column.DbColumn.Name, item.KeyColumn.CSharpColumn.Name);
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", selectBlobByKeyFieldConstant));
dalService.AppendLine(String.Format("\t\t\t@\"SELECT {0} FROM [{1}] WHERE {2} = @{3}\";", column.DbColumn.Name, item.DbTableName, item.KeyColumn.DbColumn.Name, ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name)));
dalService.AppendLine();
}
}
}
#endregion generate own select method for each blob field in a table
#region base insert method
if (item.InsertMethod.NeedToCreate && item.InsertMethod.DalAccess)
{
string insertConstant = ServiceBuilderHelper.GetInsertDalQueryConstantName(item.ClassName);
string tableFields = GetTableFields(item.ColumnList);
string tableValues = GetTableValues(item.ColumnList);
if ((MsSqlColumnTypeEnum)item.KeyColumn.DbColumn.Type.Type == MsSqlColumnTypeEnum.UNIQUEIDENTIFIER)
{
if (item.KeyColumn.NeedToGenerate)
{
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", insertConstant));
dalService.AppendLine(String.Format("\t\t\t@\"DECLARE @{0} UNIQUEIDENTIFIER; SET @{0} = NEWID(); INSERT INTO [{1}]({2}) VALUES ({3}); SELECT @{0}, @@ERROR;\";", item.KeyColumn.DbColumn.Name, item.DbTableName, tableFields, tableValues));
}
else
{
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", insertConstant));
dalService.AppendLine(String.Format("\t\t\t@\"INSERT INTO [{1}]({2}) VALUES ({3}); SELECT @{0}, @@ERROR;\";", item.KeyColumn.DbColumn.Name, item.DbTableName, tableFields, tableValues));
}
}
else
{
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", insertConstant));
dalService.AppendLine(String.Format("\t\t\t@\"INSERT INTO [{0}]({1}) VALUES ({2}); SELECT @@ERROR;\";", item.DbTableName, tableFields, tableValues));
}
dalService.AppendLine();
}
#endregion base insert method
#region base update method
if (item.UpdateMethod.NeedToCreate && item.UpdateMethod.DalAccess)
{
string updateConstant = ServiceBuilderHelper.GetUpdateDalQueryConstantName(item.ClassName);
string tableFieldValuePairs = GetTableFieldValuePairs(item.ColumnList);
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", updateConstant));
dalService.AppendLine(String.Format("\t\t\t@\"UPDATE [{0}] SET {1} WHERE {2} = @{3}; SELECT @@ERROR\";", item.DbTableName, tableFieldValuePairs, item.KeyColumn.DbColumn.Name, ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name)));
dalService.AppendLine();
}
#endregion base update method
#region base delete method
if (item.DeleteMethod.NeedToCreate && item.DeleteMethod.DalAccess)
{
string deleteByKeyFieldConstant = ServiceBuilderHelper.GetDeleteDalQueryConstantName(item.ClassName, item.KeyColumn.CSharpColumn.Name);
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", deleteByKeyFieldConstant));
dalService.AppendLine(String.Format("\t\t\t@\"DELETE FROM [{0}] WHERE {1} = @{2}; SELECT @@ERROR;\";", item.DbTableName, item.KeyColumn.DbColumn.Name, ServiceBuilderHelper.Capitalize(item.KeyColumn.DbColumn.Name)));
dalService.AppendLine();
}
#endregion base delete method
}
}
private void GenerateUdfDalServiceConstant_TG(StringBuilder dalService)
{
foreach (UdfInfo udf in TierModel.SelectMethodList)
{
if (!udf.DalAccess)
{
continue;
}
string selectUdfSqlConstant = ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name);
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", selectUdfSqlConstant));
dalService.AppendLine(String.Format("\t\t\t@\"{0}\";", udf.SqlQuery));
dalService.AppendLine();
}
foreach (UdfInfo udf in TierModel.UpdateMethodList)
{
if (!udf.DalAccess)
{
continue;
}
string selectUdfSqlConstant = ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name);
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", selectUdfSqlConstant));
dalService.AppendLine(String.Format("\t\t\t@\"{0}; SELECT @@ERROR;\";", udf.SqlQuery));
dalService.AppendLine();
}
foreach (UdfInfo udf in TierModel.DeleteMethodList)
{
if (!udf.DalAccess)
{
continue;
}
string selectUdfSqlConstant = ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name);
dalService.AppendLine(String.Format("\t\tprivate const string {0} =", selectUdfSqlConstant));
dalService.AppendLine(String.Format("\t\t\t@\"{0}; SELECT @@ERROR;\";", udf.SqlQuery));
dalService.AppendLine();
}
}
private void GenerateSelectUdfDalService_TG(StringBuilder dalService)
{
foreach (UdfInfo udf in TierModel.SelectMethodList)
{
if (!udf.DalAccess)
{
continue;
}
string selectUdfConstant = ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name);
#region Declaration Section
if (!String.IsNullOrEmpty(udf.Comment))
{
dalService.AppendLine(String.Format("\t\t// {0}", udf.Comment));
}
if (!CSharpTypeHelper.IsSimpleType(udf.ReturnType))
{
switch (udf.ReturnType)
{
case CSharpTypeEnum.ILIST:
dalService.AppendLine(String.Format("\t\tpublic IList<{0}> {1}(ISession session{2})", CSharpTypeHelper.GetCSharpTypeName(udf.Type), udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
break;
case CSharpTypeEnum.LIST_PAGE:
dalService.AppendLine(String.Format("\t\tpublic ListPage {0}(ISession session, ListQuery query{1})", udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
break;
case CSharpTypeEnum.ITEM_INFO:
case CSharpTypeEnum.LIST_ITEM:
dalService.AppendLine(String.Format("\t\tpublic {0}Model {1}(ISession session{2})", udf.Type, udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
break;
case CSharpTypeEnum.UNDEFINED:
if (!String.IsNullOrEmpty(udf.Type))
{
dalService.AppendLine(String.Format("\t\tpublic {0}Model {1}(ISession session{2})", udf.Type, udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
}
break;
}
}
else
{
if (udf.ReturnType == CSharpTypeEnum.ENUM)
{
dalService.AppendLine(String.Format("\t\tpublic {0} {1}(ISession session{2})", udf.Type, udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
}
else if (udf.ReturnType != CSharpTypeEnum.UNDEFINED)
{
dalService.AppendLine(String.Format("\t\tpublic {0} {1}(ISession session{2})", CSharpTypeHelper.GetCSharpTypeName(udf.ReturnType), udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
}
else
{
dalService.AppendLine(String.Format("\t\tpublic {0}Model {1}(ISession session{2})", udf.Type, udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
}
}
dalService.AppendLine("\t\t{");
#endregion
#region Fill Parameter(s) Section
if (udf.ColumnList.Count == 1)
{
#region single additional parameter
dalService.AppendLine(String.Format("\t\t\tSqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter({0});", selectUdfConstant));
dalService.AppendLine("\t\t\tif (prm == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprm = new SqlParameter(\"{0}\", SqlDbType.{1}, {2});", ServiceBuilderHelper.Capitalize(udf.ColumnList[0].DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(udf.ColumnList[0].DbColumn.Type), udf.ColumnList[0].DbColumn.Length));
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameter({0}, prm);", selectUdfConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine(GetFillParameterFromModel(udf.ColumnList[0]));
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
ListItem listItem = TierModel.GetListItemByName(udf.Type);
dalService.AppendLine(String.Format("\t\t\tstring sqlQuery = ListQueryHelper.GetListQuerySqlStatement(query, \"{0}\", {1});", listItem.KeyColumn.DbColumn.Name, ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name)));
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlQuery, prm);");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prm);", selectUdfConstant));
}
#endregion
}
else if (udf.ColumnList.Count > 1)
{
#region an array of additional parameters
int index = 0;
dalService.AppendLine(String.Format("\t\t\tSqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet({0});", selectUdfConstant));
dalService.AppendLine("\t\t\tif (prms == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprms = new SqlParameter[{0}];", udf.ColumnList.Count));
foreach (ColumnInfo column in udf.ColumnList)
{
dalService.AppendLine(String.Format("\t\t\t\tprms[{0}] = new SqlParameter(\"{1}\", SqlDbType.{2}, {3});", index.ToString(), ServiceBuilderHelper.Capitalize(column.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type), column.DbColumn.Length));
index++;
}
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameterSet({0}, prms);", selectUdfConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
index = 0;
foreach (ColumnInfo column in udf.ColumnList)
{
dalService.AppendLine(GetFillParameterSetFromModel(index, column));
index++;
}
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
ListItem listItem = TierModel.GetListItemByName(udf.Type);
dalService.AppendLine(String.Format("\t\t\tstring sqlQuery = ListQueryHelper.GetListQuerySqlStatement(query, \"{0}\", {1});", listItem.KeyColumn.DbColumn.Name, ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name)));
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlQuery, prms);");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prms);", selectUdfConstant));
}
#endregion
}
else if (udf.ColumnList.Count == 0)
{
#region no additional parameters
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
ListItem listItem = TierModel.GetListItemByName(udf.Type);
dalService.AppendLine(String.Format("\t\t\tstring sqlQuery = ListQueryHelper.GetListQuerySqlStatement(query, \"{0}\", {1});", listItem.KeyColumn.DbColumn.Name, ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name)));
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlQuery);");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0});", selectUdfConstant));
}
#endregion
}
#endregion
#region Return Section
if (udf.ReturnType == CSharpTypeEnum.ILIST)
{
#region List of info model or ListItem model
ItemAttributes typeAttributes = this.TierModel.GetDeclaredTypeAttributes(udf.Type);
if (typeAttributes.IsLocal)
{
if (typeAttributes.IsItemInfo)
{
dalService.AppendLine(String.Format("\t\t\treturn Get{0}ModelListFromDataReader(reader, true);", udf.Type));
}
else if (typeAttributes.IsListItem)
{
dalService.AppendLine(String.Format("\t\t\treturn Get{0}ModelFromDataReader(reader, true);", udf.Type));
}
else if (CSharpTypeHelper.IsSimpleType(CSharpTypeHelper.GetCSharpTypeEnum(udf.Type)))
{
dalService.AppendLine(String.Format("\t\t\treturn DalUtil.GetListFromDataReader<{0}>(reader, true);", udf.Type));
}
}
else
{
if (typeAttributes.IsItemInfo)
{
dalService.AppendLine(String.Format("\t\t\treturn {0}ServiceDal.Get{1}ModelListFromDataReader(reader, true);", typeAttributes.IncludeServiceName, udf.Type));
}
//else
//{
// dalService.AppendLine(String.Format("\t\t\treturn {0}ServiceDal.Get{1}ModelFromDataReader(reader, true);", includedServiceName, udf.Type));
//}
}
#endregion
}
else if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
#region ListPage
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.HasRows)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\treturn Get{0}ListPage(reader, query);", udf.Type));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t\treturn null;");
dalService.AppendLine("\t\t\t}");
#endregion
}
else
{
#region single return value
string readerProperty = "reader[0]";
if (udf.ReturnType == CSharpTypeEnum.ENUM)
{
#region return type - enum
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\t{0} val = ({0})DataConvertHelper.GetEnumValue(typeof({0}), reader[0]);", udf.Type));
//_sectionInfo.ForumType = (ForumTypeEnum)DataConvertHelper.GetEnumValue(typeof(ForumTypeEnum), reader["ForumType"]);
//dalService.AppendLine(String.Format("\t\t\t\t{0} val = reader[0] != DBNull.Value ? {1} : {2};", udf.Type, MsSqlColumnHelper.GetMsSqlValue(msSqlColumnTypeEnum, readerProperty), CSharpTypeHelper.GetCSharpNull(udf.ReturnType)));
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t\treturn val;");
#endregion return type - enum
}
else if (CSharpTypeHelper.IsSimpleType(udf.ReturnType))
{
MsSqlColumnTypeEnum msSqlColumnTypeEnum = MsSqlColumnHelper.GetMsSqlColumnTypeEnum(udf.ReturnType);
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\t{0} val = {1};", CSharpTypeHelper.GetCSharpTypeName(udf.ReturnType), MsSqlColumnHelper.GetMsSqlValue(udf.ReturnType, udf.Type, msSqlColumnTypeEnum, "reader[0]")));
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine("\t\t\t\treturn val;");
}
else
{
ItemAttributes typeAttributes = this.TierModel.GetDeclaredTypeAttributes(udf.Type);
if (typeAttributes.IsLocal)
{
if (typeAttributes.IsItemInfo)
{
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.HasRows)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\treturn Get{0}ModelFromDataReader(reader, true);", udf.Type));
}
}
else
{
if (typeAttributes.IsItemInfo)
{
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.HasRows)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\treturn {0}ServiceDal.Get{1}ModelFromDataReader(reader, true);", typeAttributes.IncludeServiceName, udf.Type));
}
}
}
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\telse");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine(String.Format("\t\t\t\treturn {0};", CSharpTypeHelper.GetCSharpNull(udf.ReturnType, udf.Type)));
dalService.AppendLine("\t\t\t}");
#endregion
}
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion
}
}
private void GenerateUpdateUdfDalService_TG(StringBuilder dalService)
{
foreach (UdfInfo udf in TierModel.UpdateMethodList)
{
if (!udf.DalAccess)
{
continue;
}
string updateUdfSqlConstant = ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name);
dalService.AppendLine(String.Format("\t\tpublic void {0}(ISession session{1})", udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
dalService.AppendLine("\t\t{");
#region Fill Parameter(s) Section
if (udf.ColumnList.Count == 1)
{
#region single additional parameter
dalService.AppendLine(String.Format("\t\t\tSqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter({0});", updateUdfSqlConstant));
dalService.AppendLine("\t\t\tif (prm == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprm = new SqlParameter(\"{0}\", SqlDbType.{1}, {2});", ServiceBuilderHelper.Capitalize(udf.ColumnList[0].DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(udf.ColumnList[0].DbColumn.Type), udf.ColumnList[0].DbColumn.Length));
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameter({0}, prm);", updateUdfSqlConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine(GetFillParameterFromModel(udf.ColumnList[0]));
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlSession.GetListCommandText(query), prm);");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prm);", updateUdfSqlConstant));
}
#endregion
}
else if (udf.ColumnList.Count > 1)
{
#region an array of additional parameters
int index = 0;
dalService.AppendLine(String.Format("\t\t\tSqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet({0});", updateUdfSqlConstant));
dalService.AppendLine("\t\t\tif (prms == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprms = new SqlParameter[{0}];", udf.ColumnList.Count));
foreach (ColumnInfo column in udf.ColumnList)
{
dalService.AppendLine(String.Format("\t\t\t\tprms[{0}] = new SqlParameter(\"{1}\", SqlDbType.{2}, {3});", index.ToString(), ServiceBuilderHelper.Capitalize(column.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type), column.DbColumn.Length));
index++;
}
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameterSet({0}, prms);", updateUdfSqlConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
index = 0;
foreach (ColumnInfo column in udf.ColumnList)
{
dalService.AppendLine(GetFillParameterSetFromModel(index, column));
index++;
}
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlSession.GetListCommandText(query), prms);");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prms);", updateUdfSqlConstant));
}
#endregion
}
else if (udf.ColumnList.Count == 0)
{
#region no additional parameters
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlSession.GetListCommandText(query));");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0});", updateUdfSqlConstant));
}
#endregion
}
#endregion
#region Return Section
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\tint error = DataConvertHelper.GetInt32Value(reader[0]);");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (error != 0)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\tthrow new SqlDalException(String.Concat(\"MS SQL Server error code = \", error.ToString()));");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\treader.Close();");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion
}
}
private void GenerateDeleteUdfDalService_TG(StringBuilder dalService)
{
foreach (UdfInfo udf in TierModel.DeleteMethodList)
{
if (!udf.DalAccess)
{
continue;
}
string deleteUdfSqlConstant = ServiceBuilderHelper.GetMethodDalQueryConstantName(udf.Name);
//dalService.AppendLine(String.Format("\t\t/// {0}", udf.Comment));
dalService.AppendLine(String.Format("\t\tpublic void {0}(ISession session{1})", udf.Name, ServiceBuilderHelper.GetPropertyCSharpFields(udf, false)));
dalService.AppendLine("\t\t{");
#region Fill Parameter(s) Section
if (udf.ColumnList.Count == 1)
{
#region single additional parameter
dalService.AppendLine(String.Format("\t\t\tSqlParameter prm = SqlHelperParameterCacheMy.GetSpParameter({0});", deleteUdfSqlConstant));
dalService.AppendLine("\t\t\tif (prm == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprm = new SqlParameter(\"{0}\", SqlDbType.{1}, {2});", ServiceBuilderHelper.Capitalize(udf.ColumnList[0].DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(udf.ColumnList[0].DbColumn.Type), udf.ColumnList[0].DbColumn.Length));
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameter({0}, prm);", deleteUdfSqlConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
dalService.AppendLine(GetFillParameterFromModel(udf.ColumnList[0]));
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlSession.GetListCommandText(query), prm);");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prm);", deleteUdfSqlConstant));
}
#endregion
}
else if (udf.ColumnList.Count > 1)
{
#region an array of additional parameters
int index = 0;
dalService.AppendLine(String.Format("\t\t\tSqlParameter[] prms = SqlHelperParameterCacheMy.GetSpParameterSet({0});", deleteUdfSqlConstant));
dalService.AppendLine("\t\t\tif (prms == null)");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine(String.Format("\t\t\t\tprms = new SqlParameter[{0}];", udf.ColumnList.Count));
foreach (ColumnInfo column in udf.ColumnList)
{
dalService.AppendLine(String.Format("\t\t\t\tprms[{0}] = new SqlParameter(\"{1}\", SqlDbType.{2}, {3});", index.ToString(), ServiceBuilderHelper.Capitalize(column.DbColumn.Name), MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type), column.DbColumn.Length));
index++;
}
dalService.AppendLine();
dalService.AppendLine(String.Format("\t\t\t\tSqlHelperParameterCacheMy.CacheParameterSet({0}, prms);", deleteUdfSqlConstant));
dalService.AppendLine("\t\t\t}");
dalService.AppendLine();
index = 0;
foreach (ColumnInfo column in udf.ColumnList)
{
dalService.AppendLine(GetFillParameterSetFromModel(index, column));
index++;
}
dalService.AppendLine();
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlSession.GetListCommandText(query), prms);");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0}, prms);", deleteUdfSqlConstant));
}
#endregion
}
else if (udf.ColumnList.Count == 0)
{
#region no additional parameters
dalService.AppendLine("\t\t\tSession sqlSession = Session.GetSqlSession(session);");
if (udf.ReturnType == CSharpTypeEnum.LIST_PAGE)
{
dalService.AppendLine("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, sqlSession.GetListCommandText(query));");
}
else
{
dalService.AppendLine(String.Format("\t\t\tSqlDataReader reader = sqlSession.ExecuteReader(CommandType.Text, {0});", deleteUdfSqlConstant));
}
#endregion
}
#endregion
#region Return Section
dalService.AppendLine();
dalService.AppendLine("\t\t\tif (reader.Read())");
dalService.AppendLine("\t\t\t{");
dalService.AppendLine("\t\t\t\tint error = DataConvertHelper.GetInt32Value(reader[0]);");
dalService.AppendLine("\t\t\t\treader.Close();");
dalService.AppendLine();
dalService.AppendLine("\t\t\t\tif (error != 0)");
dalService.AppendLine("\t\t\t\t{");
dalService.AppendLine("\t\t\t\t\tthrow new SqlDalException(String.Concat(\"MS SQL Server error code = \", error.ToString()));");
dalService.AppendLine("\t\t\t\t}");
dalService.AppendLine("\t\t\t}");
dalService.AppendLine("\t\t\treader.Close();");
dalService.AppendLine("\t\t}");
dalService.AppendLine();
#endregion
}
}
private string GetTableFields(IList<ColumnInfo> columnList)
{
StringBuilder result = new StringBuilder(500);
foreach (ColumnInfo column in columnList)
{
if (column.IsReadOnly)
{
continue;
}
if (result.Length > 0)
{
result.Append(", ");
}
result.Append(column.DbColumn.Name);
}
return result.ToString();
}
private string GetTableValues(IList<ColumnInfo> columnList)
{
StringBuilder result = new StringBuilder(500);
foreach (ColumnInfo column in columnList)
{
if (column.IsReadOnly)
{
continue;
}
if (result.Length > 0)
{
result.Append(", ");
}
result.Append(String.Concat("@", column.DbColumn.Name));
}
return result.ToString();
}
private string GetTableFieldValuePairs(IList<ColumnInfo> columnList)
{
StringBuilder result = new StringBuilder(500);
foreach (ColumnInfo column in columnList)
{
if (column.IsReadOnly)
{
continue;
}
if (result.Length > 0)
{
result.Append(", ");
}
if (!column.IsBlob || (column.IsBlob && column.CSharpColumn.NeedSeparateLoad))
{
result.Append(String.Format("{0}=@{1}", column.DbColumn.Name, ServiceBuilderHelper.Capitalize(column.DbColumn.Name)));
}
else
{
result.Append(String.Format("{0}=ISNULL(@{1},{0})", column.DbColumn.Name, ServiceBuilderHelper.Capitalize(column.DbColumn.Name)));
}
}
return result.ToString();
}
private string GetListRowPropertyFromDataReader(ColumnInfo column)
{
StringBuilder result = new StringBuilder(200);
string readerProperty = String.Concat("reader[\"", column.DbColumn.Name, "\"]");
result.Append(String.Format("row.Add{0}(\"{1}\", ({2}) (reader[\"{3}\"] != DBNull.Value ? {4} : {5}));", ServiceBuilderHelper.Capitalize(CSharpTypeHelper.GetCSharpTypeName(column.CSharpColumn)), column.CSharpColumn.Name, CSharpTypeHelper.GetCSharpTypeName(column.CSharpColumn), column.DbColumn.Name, MsSqlColumnHelper.GetMsSqlValue(column, readerProperty), CSharpTypeHelper.GetCSharpNull(column.CSharpColumn.Type, column.CSharpColumn.CustomType)));
return result.ToString();
}
private string GetFillInstanceConstructorFromDataReader(string instance, ColumnInfo column)
{
StringBuilder result = new StringBuilder(200);
string readerProperty = String.Concat("reader[\"", column.DbColumn.Name, "\"]");
string target = String.Concat("_", ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name));
string ordinal = String.Concat("ord", ServiceBuilderHelper.Capitalize(column.CSharpColumn.Name));
result.Append("int ");
result.Append(ordinal);
result.Append(" = reader.GetOrdinal(\"");
result.Append(column.DbColumn.Name);
result.Append("\"); ");
result.Append(CSharpTypeHelper.GetCSharpTypeName(column.CSharpColumn));
result.Append(" ");
result.Append(target);
result.Append(" = ");
if (column.DbColumn.IsNullable)
{
result.Append("null; ");
}
if (!String.IsNullOrEmpty(column.CSharpColumn.CustomConvertStringFromDb))
{
result.Append(String.Format(column.CSharpColumn.CustomConvertStringFromDb, readerProperty));
}
else
{
if (column.CSharpColumn.Type == CSharpTypeEnum.ENUM)
{
result.Append(String.Format("({0})", column.CSharpColumn.CustomType));
result.Append("(");
result.Append(MsSqlColumnHelper.GetMsSqlValueV2(column, readerProperty, target, ordinal));
result.Append(")");
}
else
{
result.Append(MsSqlColumnHelper.GetMsSqlValueV2(column, readerProperty, target, ordinal));
}
}
result.Append(";");
return result.ToString();
}
private string GetFillInstancePropertyFromDataReader(string instance, ColumnInfo column)
{
StringBuilder result = new StringBuilder(200);
string readerProperty = String.Concat("reader[\"", column.DbColumn.Name, "\"]");
string target = String.Concat(instance, ".", ServiceBuilderHelper.Capitalize(column.CSharpColumn.Name));
string ordinal = String.Concat("ord", ServiceBuilderHelper.Capitalize(column.CSharpColumn.Name));
result.Append("int ");
result.Append(ordinal);
result.Append(" = reader.GetOrdinal(\"");
result.Append(column.DbColumn.Name);
result.Append("\"); ");
result.Append(target);
result.Append(" = ");
if (column.DbColumn.IsNullable)
{
result.Append("null; ");
}
if (!String.IsNullOrEmpty(column.CSharpColumn.CustomConvertStringFromDb))
{
result.Append(String.Format(column.CSharpColumn.CustomConvertStringFromDb, readerProperty));
}
else
{
if (column.CSharpColumn.Type == CSharpTypeEnum.ENUM)
{
result.Append(String.Format("({0})", column.CSharpColumn.CustomType));
result.Append("(");
result.Append(MsSqlColumnHelper.GetMsSqlValueV2(column, readerProperty, target, ordinal));
result.Append(")");
}
else
{
result.Append(MsSqlColumnHelper.GetMsSqlValueV2(column, readerProperty, target, ordinal));
}
}
result.Append(";");
return result.ToString();
}
private string GetFillParameterSetFromModel(int index, string className, ColumnInfo column)
{
if (column.CSharpColumn.Type != CSharpTypeEnum.ENUM)
{
string secondParameter = (column.CSharpColumn.IsGZipped) ? ", true" : String.Empty;
return String.Format("\t\t\tprms[{0}].Value = DataConvertHelper.GetDbValue(_{1}.{2}{3});", index.ToString(), ServiceBuilderHelper.Decapitalize(className), ServiceBuilderHelper.Capitalize(column.CSharpColumn.Name), secondParameter);
}
else
{
return String.Format("\t\t\tprms[{0}].Value = DataConvertHelper.GetDbValue<{1}>(_{2}.{3});", index.ToString(), column.CSharpColumn.CustomType, ServiceBuilderHelper.Decapitalize(className), ServiceBuilderHelper.Capitalize(column.CSharpColumn.Name));
}
}
private string GetFillParameterFromModel(ColumnInfo column)
{
if (column.CSharpColumn.Type != CSharpTypeEnum.ENUM)
{
string secondParameter = (column.CSharpColumn.IsGZipped) ? ", true" : String.Empty;
return String.Format("\t\t\tprm.Value = DataConvertHelper.GetDbValue({0}{1});", ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name), secondParameter);
}
else
{
return String.Format("\t\t\tprm.Value = DataConvertHelper.GetDbValue<{0}>({1});", column.CSharpColumn.CustomType, ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name));
}
}
private string GetFillParameterSetFromModel(int index, ColumnInfo column)
{
if (column.CSharpColumn.Type != CSharpTypeEnum.ENUM)
{
string secondParameter = (column.CSharpColumn.IsGZipped) ? ", true" : String.Empty;
return String.Format("\t\t\tprms[{0}].Value = DataConvertHelper.GetDbValue({1}{2});", index.ToString(), ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name), secondParameter);
}
else
{
return String.Format("\t\t\tprms[{0}].Value = DataConvertHelper.GetDbValue<{1}>({2});", index.ToString(), column.CSharpColumn.CustomType, ServiceBuilderHelper.Decapitalize(column.CSharpColumn.Name));
}
}
private string GetDeclareSingleParameterFromModel(string param, ColumnInfo column)
{
if (column.DbColumn.Length < Int32.MaxValue)
{
return String.Format(
"\t\t\t\t{0} = new SqlParameter(\"{1}\", SqlDbType.{2}, {3});",
param,
ServiceBuilderHelper.Capitalize(column.DbColumn.Name),
MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type),
column.DbColumn.Length
);
}
else
{
return String.Format(
"\t\t\t\t{0} = new SqlParameter(\"{1}\", SqlDbType.{2});",
param,
ServiceBuilderHelper.Capitalize(column.DbColumn.Name),
MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type)
);
}
}
private string GetDeclareMiltipleParameterFromModel(string param, ColumnInfo column, int index)
{
if (column.DbColumn.Length < Int32.MaxValue)
{
return String.Format(
"\t\t\t\t{0}[{1}] = new SqlParameter(\"{2}\", SqlDbType.{3}, {4});",
param,
index.ToString(),
ServiceBuilderHelper.Capitalize(column.DbColumn.Name),
MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type),
column.DbColumn.Length
);
}
else
{
return String.Format(
"\t\t\t\t{0}[{1}] = new SqlParameter(\"{2}\", SqlDbType.{3});",
param,
index.ToString(),
ServiceBuilderHelper.Capitalize(column.DbColumn.Name),
MsSqlColumnHelper.GetSqlDbTypeString(column.DbColumn.Type)
);
}
}
#endregion
}
}