subsonic 3.0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/lib/LICENSE.txt +41 -0
  2. data/lib/SubSonic.Core.dll +0 -0
  3. data/lib/T4 Templates/ActiveRecord/ActiveRecord.tt +620 -0
  4. data/lib/T4 Templates/ActiveRecord/Context.tt +295 -0
  5. data/lib/T4 Templates/ActiveRecord/SQLServer.ttinclude +347 -0
  6. data/lib/T4 Templates/ActiveRecord/Settings.ttinclude +552 -0
  7. data/lib/T4 Templates/ActiveRecord/StoredProcedures.tt +30 -0
  8. data/lib/T4 Templates/ActiveRecord/Structs.tt +67 -0
  9. data/lib/T4 Templates/LinqTemplates/Classes.tt +117 -0
  10. data/lib/T4 Templates/LinqTemplates/Context.tt +276 -0
  11. data/lib/T4 Templates/LinqTemplates/SQLServer.ttinclude +349 -0
  12. data/lib/T4 Templates/LinqTemplates/Settings.ttinclude +551 -0
  13. data/lib/T4 Templates/LinqTemplates/StoredProcedures.tt +30 -0
  14. data/lib/T4 Templates/LinqTemplates/Structs.tt +67 -0
  15. data/lib/T4 Templates/README.txt +7 -0
  16. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/ActiveRecord.tt +560 -0
  17. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/ActiveRecord.vb +6447 -0
  18. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Context.tt +258 -0
  19. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Context.vb +349 -0
  20. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/SQLServer.ttinclude +332 -0
  21. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Settings.ttinclude +550 -0
  22. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/StoredProcedures.tt +30 -0
  23. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/StoredProcedures.vb +55 -0
  24. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Structs.tt +57 -0
  25. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Structs.vb +1478 -0
  26. data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Tests/FetchTests.vb +52 -0
  27. data/lib/T4 Templates/SubSonic.TemplatesVB/App.config +9 -0
  28. data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Application.Designer.vb +13 -0
  29. data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Application.myapp +10 -0
  30. data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/AssemblyInfo.vb +35 -0
  31. data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Resources.Designer.vb +63 -0
  32. data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Resources.resx +117 -0
  33. data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Settings.Designer.vb +73 -0
  34. data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Settings.settings +7 -0
  35. data/lib/T4 Templates/SubSonic.TemplatesVB/SubSonic.TemplatesVB.vbproj +171 -0
  36. data/lib/T4 Templates/SubSonic.TemplatesVB/SubSonic.TemplatesVB.vbproj.user +5 -0
  37. data/lib/T4 Templates/TemplateProviders/MySQL.ttinclude +278 -0
  38. data/lib/T4 Templates/TemplateProviders/MySQL.ttinclude.orig +303 -0
  39. data/lib/T4 Templates/TemplateProviders/MySQLTest.tt +27 -0
  40. data/lib/T4 Templates/TemplateProviders/SQLite.ttinclude +194 -0
  41. data/lib/T4 Templates/TemplateProviders/SQLite.ttinclude.orig +236 -0
  42. data/lib/T4 Templates/TemplateProviders/SQLiteTest.tt +27 -0
  43. data/lib/T4 Templates/TemplateProviders/Settings.ttinclude +551 -0
  44. metadata +112 -0
@@ -0,0 +1,258 @@
1
+ <#@ template language="C#v3.5" debug="False" hostspecific="True" #>
2
+ <#@ output extension=".vb" #>
3
+ <#@ include file="SQLServer.ttinclude" #>
4
+ <#
5
+ var tables = LoadTables();
6
+ #>
7
+ Imports System
8
+ Imports System.Data
9
+ Imports System.Linq
10
+ Imports System.Linq.Expressions
11
+ Imports SubSonic.DataProviders
12
+ Imports SubSonic.Extensions
13
+ Imports SubSonic.Linq.Structure
14
+ Imports SubSonic.Query
15
+ Imports SubSonic.Schema
16
+ Imports System.Data.Common
17
+ Imports System.Collections.Generic
18
+
19
+ NameSpace <#=Namespace#>
20
+
21
+ Public Partial Class <#=DatabaseName#>DB
22
+ Implements IQuerySurface
23
+
24
+ Private _dataProvider As IDataProvider
25
+ Private _provider As DbQueryProvider
26
+
27
+ Public ReadOnly Property TestMode As Boolean
28
+ Get
29
+ Return _dataProvider.ConnectionString.Equals("test", StringComparison.InvariantCultureIgnoreCase)
30
+ End Get
31
+ End Property
32
+
33
+ Public Sub New()
34
+ _dataProvider = ProviderFactory.GetProvider("<#=ConnectionStringName#>")
35
+ Init()
36
+ End Sub
37
+
38
+ Public Sub New(connectionStringName As String)
39
+ _dataProvider = ProviderFactory.GetProvider(connectionStringName)
40
+ Init()
41
+ End Sub
42
+
43
+ Public Sub New(connectionString As String, providerName As String)
44
+ _dataProvider = ProviderFactory.GetProvider(connectionString,providerName)
45
+ Init()
46
+ End Sub
47
+
48
+ Public Function FindByPrimaryKey(pkName As String) As ITable
49
+ Return _dataProvider.Schema.Tables.SingleOrDefault(Function(x) x.PrimaryKey.Name.Equals(pkName, StringComparison.InvariantCultureIgnoreCase))
50
+ End Function
51
+
52
+ Public Function GetQuery(Of T)() As Query(Of T) Implements IQuerySurface.GetQuery
53
+ Return New Query(Of T)(provider)
54
+ End Function
55
+
56
+ Public Function FindTable(tableName As String) As ITable Implements IQuerySurface.FindTable
57
+ Return _dataProvider.FindTable(tableName)
58
+ End Function
59
+
60
+ Public ReadOnly Property Provider As IDataProvider Implements IQuerySurface.Provider
61
+ Get
62
+ Return _dataProvider
63
+ End Get
64
+ End Property
65
+
66
+ Public ReadOnly Property QueryProvider As DbQueryProvider
67
+ Get
68
+ Return _provider
69
+ End Get
70
+ End Property
71
+
72
+ Private _batch As BatchQuery = Nothing
73
+
74
+ Public Sub Queue(Of T)(qry As IQueryable(Of T))
75
+ If _batch Is Nothing Then _batch = New BatchQuery(Provider, QueryProvider)
76
+ _batch.Queue(qry)
77
+ End Sub
78
+
79
+ Public Sub Queue(qry As ISqlQuery)
80
+ If _batch Is Nothing Then _batch = new BatchQuery(Provider, QueryProvider)
81
+ _batch.Queue(qry)
82
+ End Sub
83
+
84
+ Public Sub ExecuteTransaction(commands As IList(Of DbCommand))
85
+ If Not TestMode Then
86
+ Using connection = commands(0).Connection
87
+ If connection.State = ConnectionState.Closed Then connection.Open()
88
+
89
+ Using trans = connection.BeginTransaction()
90
+ For Each cmd in commands
91
+ cmd.Transaction = trans
92
+ cmd.Connection = connection
93
+ cmd.ExecuteNonQuery()
94
+ Next cmd
95
+ trans.Commit()
96
+ End Using
97
+ connection.Close()
98
+ End Using
99
+ End If
100
+ End Sub
101
+
102
+ Public Function ExecuteBatch() As IDataReader
103
+ If _batch Is Nothing Then Throw New InvalidOperationException("There's nothing in the queue")
104
+ If Not TestMode Then Return _batch.ExecuteReader()
105
+ Return Nothing
106
+ End Function
107
+ <#
108
+ //################################################ IQueryable #######################################
109
+ #>
110
+ <# foreach(Table tbl in tables){
111
+ if(!ExcludeTables.Contains(tbl.Name))
112
+ {
113
+ #>
114
+ Private _<#=tbl.QueryableName#> As Query(Of <#=tbl.ClassName#>)
115
+ Public Property <#=tbl.QueryableName#> As Query(Of <#=tbl.ClassName#>)
116
+ Get
117
+ Return _<#=tbl.QueryableName#>
118
+ End Get
119
+ Set(value As Query(Of <#=tbl.ClassName#>))
120
+ _<#=tbl.QueryableName#> = value
121
+ End Set
122
+ End Property
123
+ <#
124
+ }
125
+ }
126
+ #>
127
+
128
+ <#
129
+ //################################################ Aggregates and Queries #######################################
130
+ #>
131
+ #Region " Aggregates and SubSonic Queries "
132
+
133
+ Public Function SelectColumns(ParamArray columns As String()) As [Select]
134
+ Return New [Select](Provider, columns)
135
+ End Function
136
+
137
+ Public ReadOnly Property [Select] As [Select] Implements IQuerySurface.Select
138
+ Get
139
+ Return New [Select](Me.Provider)
140
+ End Get
141
+ End Property
142
+
143
+ Public ReadOnly Property Insert() As Insert Implements IQuerySurface.Insert
144
+ Get
145
+ Return New Insert(Me.provider)
146
+ End Get
147
+ End Property
148
+
149
+ Public Function Update(Of T As New) As Update(Of T) Implements IQuerySurface.Update
150
+ Return New Update(Of T)(Me.Provider)
151
+ End Function
152
+
153
+ Public Function Delete(Of T As New)(column As Expression(Of Func(Of T, Boolean))) As SqlQuery Implements IQuerySurface.Delete
154
+ Dim lambda As LambdaExpression = column
155
+ Dim result As SqlQuery = New Delete(Of T)(Me.Provider)
156
+ result = result.From(Of T)()
157
+ Dim c As Global.SubSonic.Query.Constraint = lambda.ParseConstraint()
158
+ result.Constraints.Add(c)
159
+ Return result
160
+ End Function
161
+
162
+ Public Function Max(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Max
163
+ Dim lambda As LambdaExpression = column
164
+ Dim colName As String = lambda.ParseObjectValue()
165
+ Dim objectName As String = GetType(T).Name
166
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
167
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Max)).From(tableName)
168
+ End Function
169
+
170
+ Public Function Min(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Min
171
+ Dim lambda As LambdaExpression = column
172
+ Dim colName As String = lambda.ParseObjectValue()
173
+ Dim objectName As String = GetType(T).Name
174
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
175
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Min)).From(tableName)
176
+ End Function
177
+
178
+ Public Function Sum(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Sum
179
+ Dim lambda As LambdaExpression = column
180
+ Dim colName As String = lambda.ParseObjectValue()
181
+ Dim objectName As String = GetType(T).Name
182
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
183
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Sum)).From(tableName)
184
+ End Function
185
+
186
+ Public Function Avg(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Avg
187
+ Dim lambda As LambdaExpression = column
188
+ Dim colName As String = lambda.ParseObjectValue()
189
+ Dim objectName As String = GetType(T).Name
190
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
191
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Avg)).From(tableName)
192
+ End Function
193
+
194
+ Public Function Count(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Count
195
+ Dim lambda As LambdaExpression = column
196
+ Dim colName As String = lambda.ParseObjectValue()
197
+ Dim objectName As String = GetType(T).Name
198
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
199
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Count)).From(tableName)
200
+ End Function
201
+
202
+ Public Function Variance(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Variance
203
+ Dim lambda As LambdaExpression = column
204
+ Dim colName As String = lambda.ParseObjectValue()
205
+ Dim objectName As String = GetType(T).Name
206
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
207
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Var)).From(tableName)
208
+ End Function
209
+
210
+ Public Function StandardDeviation(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.StandardDeviation
211
+ Dim lambda As LambdaExpression = column
212
+ Dim colName As String = lambda.ParseObjectValue()
213
+ Dim objectName As String = GetType(T).Name
214
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
215
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.StDev)).From(tableName)
216
+ End Function
217
+
218
+ #End Region
219
+
220
+ Private Sub Init()
221
+ _provider = New DbQueryProvider(Me.Provider)
222
+
223
+ <#
224
+ //################################################ QUERIES ####################################### #>
225
+ ' Query Defs
226
+ <#
227
+ foreach(Table tbl in tables)
228
+ {
229
+ if(!ExcludeTables.Contains(tbl.Name))
230
+ {
231
+ #>
232
+ <#=tbl.QueryableName#> = New Query(Of <#=tbl.ClassName#>)(_provider)
233
+ <#
234
+ }
235
+ #>
236
+ <#
237
+ }
238
+ #>
239
+
240
+ <#//################################################ SCHEMAS ####################################### #>
241
+
242
+ ' Schemas
243
+ If _dataProvider.Schema.Tables.Count = 0 Then
244
+ <#
245
+ foreach(Table tbl in tables)
246
+ {
247
+ if(!ExcludeTables.Contains(tbl.Name))
248
+ {
249
+ #>
250
+ _dataProvider.Schema.Tables.Add(New <#=tbl.CleanName#>Table(_dataProvider))
251
+ <#
252
+ }
253
+ }
254
+ #>
255
+ End If
256
+ End Sub
257
+ End Class
258
+ End NameSpace
@@ -0,0 +1,349 @@
1
+
2
+
3
+
4
+ Imports System
5
+ Imports System.Data
6
+ Imports System.Linq
7
+ Imports System.Linq.Expressions
8
+ Imports SubSonic.DataProviders
9
+ Imports SubSonic.Extensions
10
+ Imports SubSonic.Linq.Structure
11
+ Imports SubSonic.Query
12
+ Imports SubSonic.Schema
13
+ Imports System.Data.Common
14
+ Imports System.Collections.Generic
15
+
16
+ NameSpace Southwind
17
+
18
+ Public Partial Class NorthwindDB
19
+ Implements IQuerySurface
20
+
21
+ Private _dataProvider As IDataProvider
22
+ Private _provider As DbQueryProvider
23
+
24
+ Public ReadOnly Property TestMode As Boolean
25
+ Get
26
+ Return _dataProvider.ConnectionString.Equals("test", StringComparison.InvariantCultureIgnoreCase)
27
+ End Get
28
+ End Property
29
+
30
+ Public Sub New()
31
+ _dataProvider = ProviderFactory.GetProvider("Northwind")
32
+ Init()
33
+ End Sub
34
+
35
+ Public Sub New(connectionStringName As String)
36
+ _dataProvider = ProviderFactory.GetProvider(connectionStringName)
37
+ Init()
38
+ End Sub
39
+
40
+ Public Sub New(connectionString As String, providerName As String)
41
+ _dataProvider = ProviderFactory.GetProvider(connectionString,providerName)
42
+ Init()
43
+ End Sub
44
+
45
+ Public Function FindByPrimaryKey(pkName As String) As ITable
46
+ Return _dataProvider.Schema.Tables.SingleOrDefault(Function(x) x.PrimaryKey.Name.Equals(pkName, StringComparison.InvariantCultureIgnoreCase))
47
+ End Function
48
+
49
+ Public Function GetQuery(Of T)() As Query(Of T) Implements IQuerySurface.GetQuery
50
+ Return New Query(Of T)(provider)
51
+ End Function
52
+
53
+ Public Function FindTable(tableName As String) As ITable Implements IQuerySurface.FindTable
54
+ Return _dataProvider.FindTable(tableName)
55
+ End Function
56
+
57
+ Public ReadOnly Property Provider As IDataProvider Implements IQuerySurface.Provider
58
+ Get
59
+ Return _dataProvider
60
+ End Get
61
+ End Property
62
+
63
+ Public ReadOnly Property QueryProvider As DbQueryProvider
64
+ Get
65
+ Return _provider
66
+ End Get
67
+ End Property
68
+
69
+ Private _batch As BatchQuery = Nothing
70
+
71
+ Public Sub Queue(Of T)(qry As IQueryable(Of T))
72
+ If _batch Is Nothing Then _batch = New BatchQuery(Provider, QueryProvider)
73
+ _batch.Queue(qry)
74
+ End Sub
75
+
76
+ Public Sub Queue(qry As ISqlQuery)
77
+ If _batch Is Nothing Then _batch = new BatchQuery(Provider, QueryProvider)
78
+ _batch.Queue(qry)
79
+ End Sub
80
+
81
+ Public Sub ExecuteTransaction(commands As IList(Of DbCommand))
82
+ If Not TestMode Then
83
+ Using connection = commands(0).Connection
84
+ If connection.State = ConnectionState.Closed Then connection.Open()
85
+
86
+ Using trans = connection.BeginTransaction()
87
+ For Each cmd in commands
88
+ cmd.Transaction = trans
89
+ cmd.Connection = connection
90
+ cmd.ExecuteNonQuery()
91
+ Next cmd
92
+ trans.Commit()
93
+ End Using
94
+ connection.Close()
95
+ End Using
96
+ End If
97
+ End Sub
98
+
99
+ Public Function ExecuteBatch() As IDataReader
100
+ If _batch Is Nothing Then Throw New InvalidOperationException("There's nothing in the queue")
101
+ If Not TestMode Then Return _batch.ExecuteReader()
102
+ Return Nothing
103
+ End Function
104
+
105
+ Private _Categories As Query(Of Category)
106
+ Public Property Categories As Query(Of Category)
107
+ Get
108
+ Return _Categories
109
+ End Get
110
+ Set(value As Query(Of Category))
111
+ _Categories = value
112
+ End Set
113
+ End Property
114
+ Private _Customers As Query(Of Customer)
115
+ Public Property Customers As Query(Of Customer)
116
+ Get
117
+ Return _Customers
118
+ End Get
119
+ Set(value As Query(Of Customer))
120
+ _Customers = value
121
+ End Set
122
+ End Property
123
+ Private _Shippers As Query(Of Shipper)
124
+ Public Property Shippers As Query(Of Shipper)
125
+ Get
126
+ Return _Shippers
127
+ End Get
128
+ Set(value As Query(Of Shipper))
129
+ _Shippers = value
130
+ End Set
131
+ End Property
132
+ Private _Suppliers As Query(Of Supplier)
133
+ Public Property Suppliers As Query(Of Supplier)
134
+ Get
135
+ Return _Suppliers
136
+ End Get
137
+ Set(value As Query(Of Supplier))
138
+ _Suppliers = value
139
+ End Set
140
+ End Property
141
+ Private _Orders As Query(Of Order)
142
+ Public Property Orders As Query(Of Order)
143
+ Get
144
+ Return _Orders
145
+ End Get
146
+ Set(value As Query(Of Order))
147
+ _Orders = value
148
+ End Set
149
+ End Property
150
+ Private _Products As Query(Of Product)
151
+ Public Property Products As Query(Of Product)
152
+ Get
153
+ Return _Products
154
+ End Get
155
+ Set(value As Query(Of Product))
156
+ _Products = value
157
+ End Set
158
+ End Property
159
+ Private _OrderDetails As Query(Of OrderDetail)
160
+ Public Property OrderDetails As Query(Of OrderDetail)
161
+ Get
162
+ Return _OrderDetails
163
+ End Get
164
+ Set(value As Query(Of OrderDetail))
165
+ _OrderDetails = value
166
+ End Set
167
+ End Property
168
+ Private _CustomerCustomerDemos As Query(Of CustomerCustomerDemo)
169
+ Public Property CustomerCustomerDemos As Query(Of CustomerCustomerDemo)
170
+ Get
171
+ Return _CustomerCustomerDemos
172
+ End Get
173
+ Set(value As Query(Of CustomerCustomerDemo))
174
+ _CustomerCustomerDemos = value
175
+ End Set
176
+ End Property
177
+ Private _CustomerDemographics As Query(Of CustomerDemographic)
178
+ Public Property CustomerDemographics As Query(Of CustomerDemographic)
179
+ Get
180
+ Return _CustomerDemographics
181
+ End Get
182
+ Set(value As Query(Of CustomerDemographic))
183
+ _CustomerDemographics = value
184
+ End Set
185
+ End Property
186
+ Private _Regions As Query(Of Region)
187
+ Public Property Regions As Query(Of Region)
188
+ Get
189
+ Return _Regions
190
+ End Get
191
+ Set(value As Query(Of Region))
192
+ _Regions = value
193
+ End Set
194
+ End Property
195
+ Private _Territories As Query(Of Territory)
196
+ Public Property Territories As Query(Of Territory)
197
+ Get
198
+ Return _Territories
199
+ End Get
200
+ Set(value As Query(Of Territory))
201
+ _Territories = value
202
+ End Set
203
+ End Property
204
+ Private _EmployeeTerritories As Query(Of EmployeeTerritory)
205
+ Public Property EmployeeTerritories As Query(Of EmployeeTerritory)
206
+ Get
207
+ Return _EmployeeTerritories
208
+ End Get
209
+ Set(value As Query(Of EmployeeTerritory))
210
+ _EmployeeTerritories = value
211
+ End Set
212
+ End Property
213
+ Private _Employees As Query(Of Employee)
214
+ Public Property Employees As Query(Of Employee)
215
+ Get
216
+ Return _Employees
217
+ End Get
218
+ Set(value As Query(Of Employee))
219
+ _Employees = value
220
+ End Set
221
+ End Property
222
+
223
+ #Region " Aggregates and SubSonic Queries "
224
+
225
+ Public Function SelectColumns(ParamArray columns As String()) As [Select]
226
+ Return New [Select](Provider, columns)
227
+ End Function
228
+
229
+ Public ReadOnly Property [Select] As [Select] Implements IQuerySurface.Select
230
+ Get
231
+ Return New [Select](Me.Provider)
232
+ End Get
233
+ End Property
234
+
235
+ Public ReadOnly Property Insert() As Insert Implements IQuerySurface.Insert
236
+ Get
237
+ Return New Insert(Me.provider)
238
+ End Get
239
+ End Property
240
+
241
+ Public Function Update(Of T As New) As Update(Of T) Implements IQuerySurface.Update
242
+ Return New Update(Of T)(Me.Provider)
243
+ End Function
244
+
245
+ Public Function Delete(Of T As New)(column As Expression(Of Func(Of T, Boolean))) As SqlQuery Implements IQuerySurface.Delete
246
+ Dim lambda As LambdaExpression = column
247
+ Dim result As SqlQuery = New Delete(Of T)(Me.Provider)
248
+ result = result.From(Of T)()
249
+ Dim c As Global.SubSonic.Query.Constraint = lambda.ParseConstraint()
250
+ result.Constraints.Add(c)
251
+ Return result
252
+ End Function
253
+
254
+ Public Function Max(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Max
255
+ Dim lambda As LambdaExpression = column
256
+ Dim colName As String = lambda.ParseObjectValue()
257
+ Dim objectName As String = GetType(T).Name
258
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
259
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Max)).From(tableName)
260
+ End Function
261
+
262
+ Public Function Min(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Min
263
+ Dim lambda As LambdaExpression = column
264
+ Dim colName As String = lambda.ParseObjectValue()
265
+ Dim objectName As String = GetType(T).Name
266
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
267
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Min)).From(tableName)
268
+ End Function
269
+
270
+ Public Function Sum(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Sum
271
+ Dim lambda As LambdaExpression = column
272
+ Dim colName As String = lambda.ParseObjectValue()
273
+ Dim objectName As String = GetType(T).Name
274
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
275
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Sum)).From(tableName)
276
+ End Function
277
+
278
+ Public Function Avg(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Avg
279
+ Dim lambda As LambdaExpression = column
280
+ Dim colName As String = lambda.ParseObjectValue()
281
+ Dim objectName As String = GetType(T).Name
282
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
283
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Avg)).From(tableName)
284
+ End Function
285
+
286
+ Public Function Count(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Count
287
+ Dim lambda As LambdaExpression = column
288
+ Dim colName As String = lambda.ParseObjectValue()
289
+ Dim objectName As String = GetType(T).Name
290
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
291
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Count)).From(tableName)
292
+ End Function
293
+
294
+ Public Function Variance(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.Variance
295
+ Dim lambda As LambdaExpression = column
296
+ Dim colName As String = lambda.ParseObjectValue()
297
+ Dim objectName As String = GetType(T).Name
298
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
299
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.Var)).From(tableName)
300
+ End Function
301
+
302
+ Public Function StandardDeviation(Of T)(column As Expression(Of Func(Of T, Object))) As SqlQuery Implements IQuerySurface.StandardDeviation
303
+ Dim lambda As LambdaExpression = column
304
+ Dim colName As String = lambda.ParseObjectValue()
305
+ Dim objectName As String = GetType(T).Name
306
+ Dim tableName As String = Me.Provider.FindTable(objectName).Name
307
+ Return New [Select](Me.Provider, New Aggregate(colName, AggregateFunction.StDev)).From(tableName)
308
+ End Function
309
+
310
+ #End Region
311
+
312
+ Private Sub Init()
313
+ _provider = New DbQueryProvider(Me.Provider)
314
+
315
+ ' Query Defs
316
+ Categories = New Query(Of Category)(_provider)
317
+ Customers = New Query(Of Customer)(_provider)
318
+ Shippers = New Query(Of Shipper)(_provider)
319
+ Suppliers = New Query(Of Supplier)(_provider)
320
+ Orders = New Query(Of Order)(_provider)
321
+ Products = New Query(Of Product)(_provider)
322
+ OrderDetails = New Query(Of OrderDetail)(_provider)
323
+ CustomerCustomerDemos = New Query(Of CustomerCustomerDemo)(_provider)
324
+ CustomerDemographics = New Query(Of CustomerDemographic)(_provider)
325
+ Regions = New Query(Of Region)(_provider)
326
+ Territories = New Query(Of Territory)(_provider)
327
+ EmployeeTerritories = New Query(Of EmployeeTerritory)(_provider)
328
+ Employees = New Query(Of Employee)(_provider)
329
+
330
+
331
+ ' Schemas
332
+ If _dataProvider.Schema.Tables.Count = 0 Then
333
+ _dataProvider.Schema.Tables.Add(New CategoriesTable(_dataProvider))
334
+ _dataProvider.Schema.Tables.Add(New CustomersTable(_dataProvider))
335
+ _dataProvider.Schema.Tables.Add(New ShippersTable(_dataProvider))
336
+ _dataProvider.Schema.Tables.Add(New SuppliersTable(_dataProvider))
337
+ _dataProvider.Schema.Tables.Add(New OrdersTable(_dataProvider))
338
+ _dataProvider.Schema.Tables.Add(New ProductsTable(_dataProvider))
339
+ _dataProvider.Schema.Tables.Add(New OrderDetailsTable(_dataProvider))
340
+ _dataProvider.Schema.Tables.Add(New CustomerCustomerDemoTable(_dataProvider))
341
+ _dataProvider.Schema.Tables.Add(New CustomerDemographicsTable(_dataProvider))
342
+ _dataProvider.Schema.Tables.Add(New RegionTable(_dataProvider))
343
+ _dataProvider.Schema.Tables.Add(New TerritoriesTable(_dataProvider))
344
+ _dataProvider.Schema.Tables.Add(New EmployeeTerritoriesTable(_dataProvider))
345
+ _dataProvider.Schema.Tables.Add(New EmployeesTable(_dataProvider))
346
+ End If
347
+ End Sub
348
+ End Class
349
+ End NameSpace