protected override void Dispose(bool disposing) { try { if (disposing) { handler.Dispose(); QueryBlocks.Clear(); } } finally { base.Dispose(disposing); } }
/// <summary> /// Меняет опции. Текущие опции теряются, если не совпадают. /// </summary> public void SetOptions(SearchOptions opt) { var root = QueryBlocks.FirstOrDefault(); if (root != null && root.MakeOptions().Equals(opt)) { return; } if (AuthorityController.CurrentDoctor == null) { return; } SetRootOptions(opt); }
private QueryBlockViewModel SetRootOptions(SearchOptions options = null) { Contract.Requires(AuthorityController.CurrentDoctor != null); Contract.Ensures(options == null || options.PartialLoaded == Contract.Result <QueryBlockViewModel>().Options.PartialLoaded); QueryBlocks.Clear(); var qb = new QueryBlockViewModel(session, onQbEnter, options); qb.PropertyChanged += (s, e) => { if (e.PropertyName == "AllEmpty") { OnPropertyChanged(() => AllEmpty); } }; QueryBlocks.Add(qb); return(qb); }
protected override IReadOnlyList <OracleColumn> BuildColumns() { var columns = new List <OracleColumn>(); if (Type == ReferenceType.SchemaObject) { if (SchemaObject.GetTargetSchemaObject() is OracleDataObject dataObject) { columns.AddRange(dataObject.Columns.Values); } } else { var queryColumns = QueryBlocks.SelectMany(qb => qb.Columns) .Where(c => !c.IsAsterisk) .Select(c => c.ColumnDescription); columns.AddRange(queryColumns); } return(columns.AsReadOnly()); }
public SampleQueryEditorViewModel() : base(SessionVMBase.Nhib.GetSession()) { QueryBlocks.Add(new SampleQueryBlockViewModel()); }