subsonic 3.0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|