subsonic 3.0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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