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.
- data/lib/LICENSE.txt +41 -0
- data/lib/SubSonic.Core.dll +0 -0
- data/lib/T4 Templates/ActiveRecord/ActiveRecord.tt +620 -0
- data/lib/T4 Templates/ActiveRecord/Context.tt +295 -0
- data/lib/T4 Templates/ActiveRecord/SQLServer.ttinclude +347 -0
- data/lib/T4 Templates/ActiveRecord/Settings.ttinclude +552 -0
- data/lib/T4 Templates/ActiveRecord/StoredProcedures.tt +30 -0
- data/lib/T4 Templates/ActiveRecord/Structs.tt +67 -0
- data/lib/T4 Templates/LinqTemplates/Classes.tt +117 -0
- data/lib/T4 Templates/LinqTemplates/Context.tt +276 -0
- data/lib/T4 Templates/LinqTemplates/SQLServer.ttinclude +349 -0
- data/lib/T4 Templates/LinqTemplates/Settings.ttinclude +551 -0
- data/lib/T4 Templates/LinqTemplates/StoredProcedures.tt +30 -0
- data/lib/T4 Templates/LinqTemplates/Structs.tt +67 -0
- data/lib/T4 Templates/README.txt +7 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/ActiveRecord.tt +560 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/ActiveRecord.vb +6447 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Context.tt +258 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Context.vb +349 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/SQLServer.ttinclude +332 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Settings.ttinclude +550 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/StoredProcedures.tt +30 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/StoredProcedures.vb +55 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Structs.tt +57 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Structs.vb +1478 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/ActiveRecord/Tests/FetchTests.vb +52 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/App.config +9 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Application.Designer.vb +13 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Application.myapp +10 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/AssemblyInfo.vb +35 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Resources.Designer.vb +63 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Resources.resx +117 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Settings.Designer.vb +73 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/My Project/Settings.settings +7 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/SubSonic.TemplatesVB.vbproj +171 -0
- data/lib/T4 Templates/SubSonic.TemplatesVB/SubSonic.TemplatesVB.vbproj.user +5 -0
- data/lib/T4 Templates/TemplateProviders/MySQL.ttinclude +278 -0
- data/lib/T4 Templates/TemplateProviders/MySQL.ttinclude.orig +303 -0
- data/lib/T4 Templates/TemplateProviders/MySQLTest.tt +27 -0
- data/lib/T4 Templates/TemplateProviders/SQLite.ttinclude +194 -0
- data/lib/T4 Templates/TemplateProviders/SQLite.ttinclude.orig +236 -0
- data/lib/T4 Templates/TemplateProviders/SQLiteTest.tt +27 -0
- data/lib/T4 Templates/TemplateProviders/Settings.ttinclude +551 -0
- 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
|