DeveelDB  20151217
complete SQL database system, primarly developed for .NET/Mono frameworks
QueryTable.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Linq.Expressions;
6 
7 using IQToolkit;
8 
9 namespace Deveel.Data.Linq {
10  public sealed class QueryTable<T> : IQueryable<T> where T : class {
11  internal QueryTable(QueryContext context) {
12  QueryContext = context;
13  }
14 
15  public QueryContext QueryContext { get; private set; }
16 
17  private IEntityTable<T> EntityTable {
18  get { return QueryContext.GetTable<T>(); }
19  }
20 
21  IEnumerator<T> IEnumerable<T>.GetEnumerator() {
22  return EntityTable.GetEnumerator();
23  }
24 
25  IEnumerator IEnumerable.GetEnumerator() {
26  return EntityTable.GetEnumerator();
27  }
28 
29  Expression IQueryable.Expression {
30  get { return EntityTable.Expression; }
31  }
32 
33  Type IQueryable.ElementType {
34  get { return EntityTable.ElementType; }
35  }
36 
37  IQueryProvider IQueryable.Provider {
38  get { return EntityTable.Provider; }
39  }
40 
41  public int Remove(T entity) {
42  return EntityTable.Delete(entity);
43  }
44 
45  public T FindById(object id) {
46  if (id == null)
47  throw new ArgumentNullException("id");
48 
49  try {
50  return EntityTable.GetById(id);
51  } catch (Exception ex) {
52  throw new QueryException(String.Format("Error while querying type '{0}' by id.", typeof(T)), ex);
53  }
54  }
55 
56  public int Update(T entity) {
57  return EntityTable.Update(entity);
58  }
59 
60  public int Add(T entity) {
61  return EntityTable.Insert(entity);
62  }
63  }
64 }
QueryTable(QueryContext context)
Definition: QueryTable.cs:11