public void RegenerateTableLinks()
        {
            FromTableLinks = new List <TableLink>();
            var joins = GenerateJoins();

            var newJoins = joins.Where(j => !FromTableJoins.Any(f => f.Source.GetJoinString() == j.GetJoinString()));

            FromTableJoins.AddRange(newJoins.Select(j => new TableJoinModel {
                Source = j, JoinType = "Inner"
            }));
            var lostJoins = FromTableJoins.Where(j => !FromTables.Any(t => t.Alias == j.Source.LeftObjectAlias) || !FromTables.Any(t => t.Alias == j.Source.RightObjectAlias));

            FromTableJoins = FromTableJoins.Except(lostJoins).ToList();

            foreach (var fj in FromTableJoins.Where(f => !f.IsDeleted))
            {
                var join    = fj.Source;
                var pt      = FromTables.First(t => t.Alias == join.LeftObjectAlias);
                var pk      = pt.Properties.First(p => p.StoreProperty.Name == join.LeftField);
                var pkIndex = pt.Properties.IndexOf(pk);

                var ft      = FromTables.First(t => t.Alias == join.RightObjectAlias);
                var fk      = ft.Properties.First(p => p.StoreProperty.Name == join.RightField);
                var fkIndex = ft.Properties.IndexOf(fk);

                var link = new TableLink
                {
                    PrimaryRefId = GenerateObjectId("table_primary", pt.Id, pkIndex),
                    ForeignRefId = GenerateObjectId("table_foreign", ft.Id, fkIndex),
                    Source       = join
                };

                FromTableLinks.Add(link);
            }
        }
        public void Clear()
        {
            // clear all values in controller
            StoreParameters.DataService     = "MyDataService";
            StoreParameters.QueryName       = "";
            StoreParameters.Namespace       = "Default";
            StoreParameters.QueryReturnType = "";

            FromTables.Clear();
            SelectionProperties.Clear();
            FromTableLinks.Clear();
            FromTableJoins.Clear();
            WhereClause = "";
        }