private void VisitEntity(Type entityType, string path, List <SelectedColumnModel> columns, List <JoinModel> joins) { foreach (var datacolumn in m_dataModel.GetTableDataColumns(entityType)) { columns.Add(new SelectedColumnModel(path, m_dataModel.GetColumnName(datacolumn), null)); } foreach (var reference in m_dataModel.GetReferences(entityType)) { var propertyPath = $"{path}.{reference.LeftModelPropertyName}"; if (!IsIncluded(propertyPath)) { continue; } var joinedTableAlias = DotPathHelper.Combine(path, reference.LeftModelPropertyName); var join = new JoinModel() { JoinType = JoinType.Left, Condition = $"[{path}].[{reference.LeftKeyColumnName}]=[{joinedTableAlias}].[{reference.RightKeyColumnName}]", JoinedTableAlias = joinedTableAlias, JoinedTableName = m_dataModel.GetTableName(reference.RightEntityType) }; joins.Add(join); VisitEntity(reference.RightEntityType, joinedTableAlias, columns, joins); } }
public void TestCombine(string a, string b, string exp) { Assert.Equal(exp, DotPathHelper.Combine(a, b)); }