public void OnGenerate() { try { IInfoExtractor extractor = null; switch (SelectedAccessorType) { case "MsSql": extractor = new MsSqlInfoExtractor(CString); break; case "SqLite": extractor = new SqLiteInfoExtractor(CString); break; } if (extractor != null) { var writables = (TableFilter ?? "").Split(',') .Where(f => !String.IsNullOrWhiteSpace(f)) .Select(f => f.Trim()) .ToArray(); var readables = (ReadOnlyTableFilter ?? "").Split(',') .Where(f => !String.IsNullOrWhiteSpace(f)) .Select(f => f.Trim()) .ToArray(); var writableInfo = extractor.GetDatabaseMetadata(writables); var readableInfo = extractor.GetDatabaseMetadata(readables); var fileWriter = new FileWriter(); var entityWriter = new EntityWriter(); var typeWriter = new TypeWriter(); var output = fileWriter.WriteHeader(Namespace); output += entityWriter.Execute(AppName, Namespace, UseLinq, LessChanges, WriteSchema, ScriptDefaults, UseUnspecified, writableInfo); output += typeWriter.Execute(readableInfo); output += fileWriter.WriteFooter(); Output = output; OnPropertyChanged("Output"); } } catch (Exception e) { Output = e.StackTrace; OnPropertyChanged("Output"); } }