DeveelDB  20151217
complete SQL database system, primarly developed for .NET/Mono frameworks
QueryContext.cs
Go to the documentation of this file.
1 using System;
2 using System.Linq;
3 
4 using Deveel.Data.Mapping;
5 
6 using IQToolkit;
7 
8 namespace Deveel.Data.Linq {
9  public abstract class QueryContext : IDisposable {
10  public QueryContext(IQuery context) {
11  ParentContext = context;
12  }
13 
15  Dispose(false);
16  }
17 
18  public IQuery ParentContext { get; private set; }
19 
20  private IQueryProvider Provider { get; set; }
21 
23  if (Provider == null) {
24  // TODO: Get all other settings as metadata
25 
26  var mappingContext = new MappingContext();
27  OnBuildMap(mappingContext);
28 
29  var model = mappingContext.CreateModel();
30 
31  Provider = ParentContext.GetQueryProvider(model);
32  }
33 
34  return (DeveelDbProvider) Provider;
35  }
36 
37  protected abstract void OnBuildMap(MappingContext mappingContext);
38 
39  internal IEntityTable<T> GetTable<T>() where T : class {
40  return CreateProvider().GetTable<T>();
41  }
42 
43  public QueryTable<T> Table<T>() where T : class {
44  return new QueryTable<T>(this);
45  }
46 
47  public void Dispose() {
48  Dispose(true);
49  GC.SuppressFinalize(this);
50  }
51 
52  protected virtual void Dispose(bool disposing) {
53  if (disposing) {
54  }
55 
56  Provider = null;
57  }
58  }
59 }
virtual void Dispose(bool disposing)
Definition: QueryContext.cs:52
DeveelDbProvider CreateProvider()
Definition: QueryContext.cs:22
QueryContext(IQuery context)
Definition: QueryContext.cs:10