📄 builderframef3.cs
字号:
namespace LTP.CodeBuild
{
using LTP.BuilderModel;
using LTP.CodeHelper;
using LTP.IBuilder;
using LTP.IDBO;
using LTP.Utility;
using System;
using System.Collections.Generic;
using System.Text;
public class BuilderFrameF3 : BuilderFrame
{
private IBuilderBLL ibll;
private IBuilderDAL idal;
private IBuilderDALTran idaltran;
public BuilderFrameF3(IDbObject idbobj, string dbName, string nameSpace, string folder, string dbHelperName)
{
base.dbobj = idbobj;
base._dbtype = idbobj.DbType;
base.DbName = dbName;
base.NameSpace = nameSpace;
base.DbHelperName = dbHelperName;
base.Folder = folder;
}
public BuilderFrameF3(IDbObject idbobj, string dbName, string tableName, string modelName, string bllName, string dalName, List<ColumnInfo> fieldlist, List<ColumnInfo> keys, string nameSpace, string folder, string dbHelperName)
{
base.dbobj = idbobj;
base._dbtype = idbobj.DbType;
base.DbName = dbName;
base.TableName = tableName;
base.ModelName = modelName;
base.BLLName = bllName;
base.DALName = dalName;
base.NameSpace = nameSpace;
base.DbHelperName = dbHelperName;
base.Folder = folder;
base.Fieldlist = fieldlist;
base.Keys = keys;
foreach (ColumnInfo info in keys)
{
base._key = info.ColumnName;
base._keyType = info.TypeName;
if (info.IsIdentity)
{
base._key = info.ColumnName;
base._keyType = CodeCommon.DbTypeToCS(info.TypeName);
break;
}
}
}
public string GetBLLCode(string AssemblyGuid, bool Maxid, bool Exists, bool Add, bool Update, bool Delete, bool GetModel, bool GetModelByCache, bool List, bool ListProc)
{
this.ibll = BuilderFactory.CreateBLLObj(AssemblyGuid);
if (this.ibll == null)
{
return "请选择有效的业务层代码组件类型!";
}
this.ibll.set_Fieldlist(base.Fieldlist);
this.ibll.set_Keys(base.Keys);
this.ibll.set_NameSpace(base.NameSpace);
this.ibll.set_Modelpath(base.Modelpath);
this.ibll.set_ModelName(base.ModelName);
this.ibll.set_BLLpath(base.BLLpath);
this.ibll.set_BLLName(base.BLLName);
this.ibll.set_Factorypath(base.Factorypath);
this.ibll.set_IDALpath(base.IDALpath);
this.ibll.set_IClass(base.IClass);
this.ibll.set_DALpath(base.DALpath);
this.ibll.set_DALName(base.DALName);
this.ibll.set_IsHasIdentity(base.IsHasIdentity);
this.ibll.set_DbType(base.dbobj.DbType);
return this.ibll.GetBLLCode(Maxid, Exists, Add, Update, Delete, GetModel, GetModelByCache, List);
}
public string GetDALCode(string AssemblyGuid, bool Maxid, bool Exists, bool Add, bool Update, bool Delete, bool GetModel, bool List, string procPrefix)
{
this.idal = BuilderFactory.CreateDALObj(AssemblyGuid);
if (this.idal == null)
{
return "请选择有效的数据层代码组件类型!";
}
this.idal.set_DbObject(base.dbobj);
this.idal.set_DbName(base.DbName);
this.idal.set_TableName(base.TableName);
this.idal.set_Fieldlist(base.Fieldlist);
this.idal.set_Keys(base.Keys);
this.idal.set_NameSpace(base.NameSpace);
this.idal.set_Folder(base.Folder);
this.idal.set_Modelpath(base.Modelpath);
this.idal.set_ModelName(base.ModelName);
this.idal.set_DALpath(base.DALpath);
this.idal.set_DALName(base.DALName);
this.idal.set_IDALpath(base.IDALpath);
this.idal.set_IClass(base.IClass);
this.idal.set_DbHelperName(base.DbHelperName);
this.idal.set_ProcPrefix(procPrefix);
return this.idal.GetDALCode(Maxid, Exists, Add, Update, Delete, GetModel, List);
}
public string GetDALCodeTran(string AssemblyGuid, bool Maxid, bool Exists, bool Add, bool Update, bool Delete, bool GetModel, bool List, string procPrefix, string tableNameParent, string tableNameSon, string modelNameParent, string modelNameSon, List<ColumnInfo> fieldlistParent, List<ColumnInfo> fieldlistSon, List<ColumnInfo> keysParent, List<ColumnInfo> keysSon, string DALNameParent, string DALNameSon)
{
this.idaltran = BuilderFactory.CreateDALTranObj(AssemblyGuid);
if (this.idaltran == null)
{
return "请选择有效的数据层代码组件类型!";
}
this.idaltran.set_DbObject(base.dbobj);
this.idaltran.set_DbName(base.DbName);
this.idaltran.set_TableNameParent(tableNameParent);
this.idaltran.set_TableNameSon(tableNameSon);
this.idaltran.set_FieldlistParent(fieldlistParent);
this.idaltran.set_FieldlistSon(fieldlistSon);
this.idaltran.set_KeysParent(keysParent);
this.idaltran.set_KeysSon(keysSon);
this.idaltran.set_NameSpace(base.NameSpace);
this.idaltran.set_Folder(base.Folder);
this.idaltran.set_Modelpath(base.Modelpath);
this.idaltran.set_ModelNameParent(modelNameParent);
this.idaltran.set_ModelNameSon(modelNameSon);
this.idaltran.set_DALpath(base.DALpath);
this.idaltran.set_DALNameParent(DALNameParent);
this.idaltran.set_DALNameSon(DALNameSon);
this.idaltran.set_IDALpath(base.IDALpath);
this.idaltran.set_IClass(base.IClass);
this.idaltran.set_DbHelperName(base.DbHelperName);
this.idaltran.set_ProcPrefix(procPrefix);
return this.idaltran.GetDALCode(Maxid, Exists, Add, Update, Delete, GetModel, List);
}
public string GetDALFactoryCode()
{
StringBuilder builder = new StringBuilder();
builder.Append("using System;\r\n");
builder.Append("using System.Reflection;\r\n");
builder.Append("using System.Configuration;\r\n");
builder.Append("using " + base.IDALpath + ";\r\n");
builder.Append("namespace " + base.Factorypath + "\r\n");
builder.Append("{\r\n");
builder.Append(base.Space(1) + "/// <summary>\r\n");
builder.Append(base.Space(1) + "/// 抽象工厂模式创建DAL。\r\n");
builder.Append(base.Space(1) + "/// web.config 需要加入配置:(利用工厂模式+反射机制+缓存机制,实现动态创建不同的数据层对象接口) \r\n");
builder.Append(base.Space(1) + "/// DataCache类在导出代码的文件夹里\r\n");
builder.Append(base.Space(1) + "/// <appSettings> \r\n");
builder.Append(base.Space(1) + "/// <add key=\"DAL\" value=\"" + base.DALpath + "\" /> (这里的命名空间根据实际情况更改为自己项目的命名空间)\r\n");
builder.Append(base.Space(1) + "/// </appSettings> \r\n");
builder.Append(base.Space(1) + "/// </summary>\r\n");
builder.Append(base.Space(1) + "public sealed class DataAccess\r\n");
builder.Append(base.Space(1) + "{\r\n");
builder.Append(base.Space(2) + "private static readonly string AssemblyPath = ConfigurationManager.AppSettings[\"DAL\"];\r\n");
builder.Append(base.Space(2) + "/// <summary>\r\n");
builder.Append(base.Space(2) + "/// 创建对象或从缓存获取\r\n");
builder.Append(base.Space(2) + "/// </summary>\r\n");
builder.Append(base.Space(2) + "public static object CreateObject(string AssemblyPath,string ClassNamespace)\r\n");
builder.Append(base.Space(2) + "{\r\n");
builder.Append(base.Space(3) + "object objType = DataCache.GetCache(ClassNamespace);//从缓存读取\r\n");
builder.Append(base.Space(3) + "if (objType == null)\r\n");
builder.Append(base.Space(3) + "{\r\n");
builder.Append(base.Space(4) + "try\r\n");
builder.Append(base.Space(4) + "{\r\n");
builder.Append(base.Space(5) + "objType = Assembly.Load(AssemblyPath).CreateInstance(ClassNamespace);//反射创建\r\n");
builder.Append(base.Space(5) + "DataCache.SetCache(ClassNamespace, objType);// 写入缓存\r\n");
builder.Append(base.Space(4) + "}\r\n");
builder.Append(base.Space(4) + "catch\r\n");
builder.Append(base.Space(4) + "{}\r\n");
builder.Append(base.Space(3) + "}\r\n");
builder.Append(base.Space(3) + "return objType;\r\n");
builder.Append(base.Space(2) + "}\r\n");
builder.Append(this.GetDALFactoryMethodCode());
builder.Append(base.Space(1) + "}\r\n");
builder.Append("}\r\n");
builder.Append("\r\n");
return builder.ToString();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -