/// <summary> /// 加入關連欄位 /// </summary> /// <param name="fields"></param> /// <param name="linkProgID"></param> /// <param name="linkDisplayName"></param> private void AddLinkReturnField(GFieldDefineCollection fields, GProgramDefine linkProgDefine) { var linkProgID = linkProgDefine.ProgID; var linkDisplayName = linkProgDefine.DisplayName; var linkField = new GFieldDefine { FieldName = $"{linkProgID}ID", DisplayName = $"{linkDisplayName}編號", MaxLength = 10, LinkProgID = linkProgID }; linkField.LinkReturnFields.Add(new GLinkReturnField { SourceField = SysFields.ID, DestField = $"{linkProgID}ID" }); linkField.LinkReturnFields.Add(new GLinkReturnField { SourceField = SysFields.ViewID, DestField = $"TMP_{linkProgID}ID" }); linkField.LinkReturnFields.Add(new GLinkReturnField { SourceField = SysFields.Name, DestField = $"TMP_{linkProgID}Name" }); fields.Add(linkField); fields.Add(new GFieldDefine { FieldName = $"TMP_{linkProgID}ID", DisplayName = $"{linkDisplayName}代碼", FieldType = EFieldType.LinkField, LinkFieldName = $"{linkProgID}ID" }); fields.Add(new GFieldDefine { FieldName = $"TMP_{linkProgID}Name", DisplayName = $"{linkDisplayName}名稱", FieldType = EFieldType.LinkField, LinkFieldName = $"{linkProgID}ID" }); }
/// <summary> /// 建置資料表關連資訊。 /// </summary> /// <param name="programDefine">程式定義。</param> /// <param name="tableName">資料表名稱。</param> /// <param name="selectFields">取回欄位集合字串。</param> /// <param name="filterItems">過濾條件項目集合。</param> /// <param name="sortFields">排序欄位集合。</param> public void Execute(GProgramDefine programDefine, string tableName, string selectFields, GFilterItemCollection filterItems, GSortFieldCollection sortFields) { this.ProgramDefine = programDefine; this.TableName = tableName; var oBuilder = new GTableJoinBuilder(programDefine, tableName, selectFields, filterItems, sortFields); oBuilder.Execute(this); }
/// <summary> /// 建構函式。 /// </summary> /// <param name="programDefine">程式定義。</param> /// <param name="tableName">資料表名稱。</param> /// <param name="selectFields">取回欄位集合字串。</param> /// <param name="filterItems">過濾條件項目集合。</param> /// <param name="sortFields">排序欄位集合。</param> public GTableJoinBuilder(GProgramDefine programDefine, string tableName, string selectFields, GFilterItemCollection filterItems, GSortFieldCollection sortFields) { ProgramDefine = programDefine; TableName = tableName; SelectFields = selectFields; FilterItems = filterItems; SortFields = sortFields; }
public void DoCreateProgramDefine() { var helper = new InitDataHelper(); var progDefine = new GProgramDefine(); Console.WriteLine("ProgID:"); progDefine.ProgID = Console.ReadLine(); Console.WriteLine("DisplayName:"); progDefine.DisplayName = Console.ReadLine(); Console.WriteLine("Start Create Table"); var tableDefine = new GTableDefine(); tableDefine.PrimaryKey = progDefine.ProgID + "Id"; progDefine.Tables.Add(tableDefine); Console.WriteLine("TableName:"); tableDefine.TableName = Console.ReadLine(); Console.WriteLine("DbTableName:"); tableDefine.DbTableName = Console.ReadLine(); Console.WriteLine("Table DisplayName:"); tableDefine.DisplayName = Console.ReadLine(); var createField = true; while (createField) { Console.WriteLine("Start Create Field Define"); var fieldDefine = new GFieldDefine(); tableDefine.Fields.Add(fieldDefine); Console.WriteLine("FieldName:"); fieldDefine.FieldName = Console.ReadLine(); Console.WriteLine("DisplayName:"); fieldDefine.DisplayName = Console.ReadLine(); Console.WriteLine("DbType:"); Console.WriteLine("(0:String, 1:Text, 2:Boolean, 3:Integer, 4:Double, 5:Currency, 6:DateTime, 7:GUID, 8:Binary)"); var dbType = int.Parse(Console.ReadLine()); fieldDefine.DbType = BaseFunc.CEnum <EFieldDbType>(dbType, 0); Console.WriteLine("MaxLength:"); fieldDefine.MaxLength = int.Parse(Console.ReadLine()); Console.WriteLine("AllowNull:(0: false, 1: true)"); fieldDefine.AllowNull = BaseFunc.CBool(Console.ReadLine()); Console.WriteLine("LinkFieldName:"); fieldDefine.LinkFieldName = Console.ReadLine(); Console.WriteLine("LinkProgID:"); fieldDefine.LinkProgID = Console.ReadLine(); Console.WriteLine("Continue Create Field Define? 1:Yes? 0:No?"); var ans = Console.ReadLine(); if (ans.SameTextOr("No", "0")) { createField = false; } Console.WriteLine("================================================"); } helper.ProgDefineToJson(progDefine); Console.WriteLine($"已產生程式定義檔案:{progDefine.ProgID}/{progDefine.DisplayName}"); Console.ReadKey(); }
/// <summary> /// 建構式。 /// </summary> /// <param name="helper">資料庫命令輔助類別介面。</param> /// <param name="programDefine">程式定義。</param> /// <param name="tableName">資料表名稱。</param> /// <param name="tableJoinProvider">資料表關連資訊提供者。</param> /// <param name="filterItems">資料過濾條件項目集合。</param> /// <param name="sessionInfo">存取連線相關資料的輔助類別。</param> /// <param name="enableDbParameter">過濾條件是否啟用 DB 參數。</param> public GFilterInputArgs(IDbCommandHelper helper, GProgramDefine programDefine, string tableName, GTableJoinProvider tableJoinProvider, GFilterItemCollection filterItems, GSessionInfo sessionInfo, bool enableDbParameter) { DbCommandHelper = helper; ProgramDefine = programDefine; TableName = tableName; TableJoinProvider = tableJoinProvider; FilterItems = filterItems; SessionInfo = sessionInfo; EnableDbParameter = enableDbParameter; }
/// <summary> /// 程式定義轉XML /// </summary> /// <param name="programDefine"></param> public void ProgDefineToJson(GProgramDefine programDefine) { this.SaveDefineHelper.SaveDefine(programDefine); var dbDefines = DefineFunc.ProgDefineToDbTableDefine(programDefine); foreach (var d in dbDefines) { this.SaveDefineHelper.SaveDefine(d); } }
/// <summary> /// 產生程式定義 /// </summary> /// <param name="progID"></param> /// <param name="displayName"></param> /// <returns></returns> private GProgramDefine CreateProgDefines(string progID, string displayName) { var progDefine = new GProgramDefine { ProgID = progID, DisplayName = displayName }; var tableDefine = new GTableDefine { TableName = progID, DisplayName = displayName, DbTableName = progID, PrimaryKey = $"{progID}ID" }; tableDefine.Fields.Add(new GFieldDefine { FieldName = SysFields.CompanyID, DisplayName = $"公司編號", MaxLength = 10 }); tableDefine.Fields.Add(new GFieldDefine { FieldName = SysFields.ID, DisplayName = $"{displayName}編號", MaxLength = 10 }); tableDefine.Fields.Add(new GFieldDefine { FieldName = SysFields.ViewID, DisplayName = $"{displayName}代碼", MaxLength = 10 }); tableDefine.Fields.Add(new GFieldDefine { FieldName = SysFields.Name, DisplayName = $"{displayName}名稱", MaxLength = 10 }); progDefine.Tables.Add(tableDefine); return(progDefine); }
/// <summary> /// 建構函式。 /// </summary> /// <param name="sessionGuid">連線識別。</param> /// <param name="programDefine">程式定義。</param> public GOracleCommandBuilder(Guid sessionGuid, GProgramDefine programDefine) : base(sessionGuid, programDefine) { }
/// <summary> /// 建立資料庫命令產生器。 /// </summary> /// <param name="sessionInfo">連線資訊。</param> /// <param name="programDefine">程式定義。</param> public static IDbCommandBuilder CreateDbCommandBuilder(GSessionInfo sessionInfo, GProgramDefine programDefine) { string sMessage; switch (sessionInfo.DatabaseType) { case EDatabaseType.SQLServer: return(new GSqlCommandBuilder(sessionInfo.SessionGuid, programDefine)); case EDatabaseType.Oracle: return(new GOracleCommandBuilder(sessionInfo.SessionGuid, programDefine)); default: sMessage = StrFunc.StrFormat(@"DatabaseType={0} Not Supported IDbCommandBuilder", BaseFunc.GetEnumName(sessionInfo.DatabaseType)); throw new NotSupportedException(sMessage); } }
/// <summary> /// 建構函式。 /// </summary> /// <param name="programDefine">程式定義。</param> public GBaseDbCommandBuilder(Guid sessionGuid, GProgramDefine programDefine) : base(sessionGuid) { this.ProgramDefine = programDefine; }