From 8180c65ccd04ee9aa52cfa37ebf2d523832e49ab Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Fri, 8 Apr 2022 10:27:17 +0200 Subject: [PATCH] Fix a bug where virtual columns were created from other tables --- MultiTool.Common/Templates/TemplateLoader.vb | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/MultiTool.Common/Templates/TemplateLoader.vb b/MultiTool.Common/Templates/TemplateLoader.vb index f2f7f18..ab6c89a 100644 --- a/MultiTool.Common/Templates/TemplateLoader.vb +++ b/MultiTool.Common/Templates/TemplateLoader.vb @@ -259,21 +259,25 @@ Namespace Templates End Function Private Function CreateVirtualColumns(pTemplate As Template, pTemplateConfig As TemplateConfig) As Template - For Each oConfigItem In pTemplateConfig.Items + Dim oTemplateItems = pTemplateConfig.Items. + Where(Function(item) item.Template = pTemplate.Name). + ToList() + + For Each oItem In oTemplateItems ' Find the table that relates to this config item - Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oConfigItem.Table).FirstOrDefault() + Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oItem.Table).FirstOrDefault() If oTable Is Nothing Then - Logger.Warn("Table [{0}] for item [{1}] does exist in this Template!", oConfigItem.Table, oConfigItem.Name) + Logger.Warn("Table [{0}] for item [{1}] does exist in this Template!", oItem.Table, oItem.Name) Continue For End If - Dim oColumnExists = oTable.Columns.Any(Function(column) column.Name = oConfigItem.Name) + Dim oColumnExists = oTable.Columns.Any(Function(column) column.Name = oItem.Name) - If oColumnExists = False And oConfigItem.IsVirtual = True Then + If oColumnExists = False And oItem.IsVirtual = True Then oTable.Columns.Add(New Template.Column() With { - .Name = oConfigItem.Name, - .Config = oConfigItem, + .Name = oItem.Name, + .Config = oItem, .DataType = Constants.ColumnType.String, .IsRequired = False })