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,30 @@
|
|
1
|
+
<#@ template language="C#v3.5" debug="False" hostspecific="True" #>
|
2
|
+
<#@ output extension=".cs" #>
|
3
|
+
<#@ include file="SQLServer.ttinclude" #>
|
4
|
+
<#
|
5
|
+
var sps = GetSPs();
|
6
|
+
if(sps.Count>0){
|
7
|
+
#>
|
8
|
+
using System;
|
9
|
+
using SubSonic;
|
10
|
+
using SubSonic.Schema;
|
11
|
+
using SubSonic.DataProviders;
|
12
|
+
using System.Data;
|
13
|
+
|
14
|
+
namespace <#=Namespace#>{
|
15
|
+
public partial class <#=DatabaseName#>DB{
|
16
|
+
|
17
|
+
<# foreach(var sp in sps){#>
|
18
|
+
public StoredProcedure <#=sp.CleanName#>(<#=sp.ArgList#>){
|
19
|
+
StoredProcedure sp=new StoredProcedure("<#=sp.Name#>",this.Provider);
|
20
|
+
<# foreach(var par in sp.Parameters){#>
|
21
|
+
sp.Command.AddParameter("<#=par.Name#>",<#=par.CleanName#>,DbType.<#=par.DbType#>);
|
22
|
+
<# }#>
|
23
|
+
return sp;
|
24
|
+
}
|
25
|
+
<# }#>
|
26
|
+
|
27
|
+
}
|
28
|
+
|
29
|
+
}
|
30
|
+
<# }#>
|
@@ -0,0 +1,67 @@
|
|
1
|
+
<#@ template language="C#v3.5" debug="False" hostspecific="True" #>
|
2
|
+
<#@ output extension=".cs" #>
|
3
|
+
<#@ include file="SQLServer.ttinclude" #>
|
4
|
+
<#
|
5
|
+
var tables = LoadTables();
|
6
|
+
#>
|
7
|
+
using System;
|
8
|
+
using SubSonic.Schema;
|
9
|
+
using System.Collections.Generic;
|
10
|
+
using SubSonic.DataProviders;
|
11
|
+
using System.Data;
|
12
|
+
|
13
|
+
namespace <#=Namespace#> {
|
14
|
+
|
15
|
+
<# foreach(var tbl in tables){
|
16
|
+
if(!ExcludeTables.Contains(tbl.Name))
|
17
|
+
{
|
18
|
+
#>
|
19
|
+
/// <summary>
|
20
|
+
/// Table: <#=tbl.Name#>
|
21
|
+
/// Primary Key: <#=tbl.PrimaryKey#>
|
22
|
+
/// </summary>
|
23
|
+
|
24
|
+
public class <#=tbl.CleanName#>Table: DatabaseTable {
|
25
|
+
|
26
|
+
public <#=tbl.CleanName#>Table(IDataProvider provider):base("<#=tbl.Name#>",provider){
|
27
|
+
ClassName = "<#=tbl.ClassName#>";
|
28
|
+
SchemaName = "<#=tbl.Schema ?? ""#>";
|
29
|
+
|
30
|
+
<# foreach(var col in tbl.Columns){#>
|
31
|
+
|
32
|
+
Columns.Add(new DatabaseColumn("<#=col.Name#>", this)
|
33
|
+
{
|
34
|
+
IsPrimaryKey = <#=col.IsPK.ToString().ToLower()#>,
|
35
|
+
DataType = DbType.<#=col.DbType.ToString()#>,
|
36
|
+
IsNullable = <#=col.IsNullable.ToString().ToLower()#>,
|
37
|
+
AutoIncrement = <#=col.AutoIncrement.ToString().ToLower()#>,
|
38
|
+
IsForeignKey = <#=col.IsForeignKey.ToString().ToLower()#>,
|
39
|
+
MaxLength = <#=col.MaxLength#>
|
40
|
+
});
|
41
|
+
<# }#>
|
42
|
+
|
43
|
+
|
44
|
+
}
|
45
|
+
|
46
|
+
<# foreach(var col in tbl.Columns){#>
|
47
|
+
public IColumn <#=col.CleanName#>{
|
48
|
+
get{
|
49
|
+
return this.GetColumn("<#=col.Name#>");
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
public static string <#= col.CleanName #>Column{
|
54
|
+
get{
|
55
|
+
return "<#= col.Name #>";
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
<# }#>
|
60
|
+
}
|
61
|
+
|
62
|
+
<#
|
63
|
+
}
|
64
|
+
|
65
|
+
}
|
66
|
+
#>
|
67
|
+
}
|
@@ -0,0 +1,560 @@
|
|
1
|
+
<#@ template language="C#v3.5" debug="True" hostspecific="True" #>
|
2
|
+
<#@ output extension=".vb" #>
|
3
|
+
<#@ include file="SQLServer.ttinclude" #>
|
4
|
+
Imports System
|
5
|
+
Imports System.Collections.Generic
|
6
|
+
Imports System.Linq
|
7
|
+
Imports System.Text
|
8
|
+
Imports System.Data
|
9
|
+
Imports SubSonic.DataProviders
|
10
|
+
Imports SubSonic.Extensions
|
11
|
+
Imports System.Linq.Expressions
|
12
|
+
Imports SubSonic.Schema
|
13
|
+
Imports System.Collections
|
14
|
+
Imports SubSonic
|
15
|
+
Imports SubSonic.Repository
|
16
|
+
Imports System.ComponentModel
|
17
|
+
Imports System.Data.Common
|
18
|
+
|
19
|
+
NameSpace <#=Namespace #>
|
20
|
+
<#
|
21
|
+
|
22
|
+
var tables = LoadTables();
|
23
|
+
|
24
|
+
foreach(Table tbl in tables)
|
25
|
+
{
|
26
|
+
if(!ExcludeTables.Contains(tbl.Name))
|
27
|
+
{
|
28
|
+
#>
|
29
|
+
|
30
|
+
|
31
|
+
''' <summary>
|
32
|
+
''' A class which represents the <#=tbl.Name #> table in the <#=DatabaseName#> Database.
|
33
|
+
''' </summary>
|
34
|
+
Public Partial Class <#=tbl.ClassName#>
|
35
|
+
Implements IActiveRecord
|
36
|
+
|
37
|
+
' Built-in testing
|
38
|
+
Shared TestItems As IList(Of <#=tbl.ClassName#>)
|
39
|
+
Shared _testRepo As TestRepository(Of <#=tbl.ClassName#>)
|
40
|
+
Public Sub SetIsLoaded(isLoaded As Boolean) Implements IActiveRecord.SetIsLoaded
|
41
|
+
_isLoaded = isLoaded
|
42
|
+
End Sub
|
43
|
+
Private Shared Sub SetTestRepo()
|
44
|
+
iF _testRepo Is Nothing Then _testRepo = New TestRepository(Of <#=tbl.ClassName#>)(New <#=Namespace#>.<#=DatabaseName#>DB())
|
45
|
+
End Sub
|
46
|
+
Public Shared Sub ResetTestRepo()
|
47
|
+
_testRepo = Nothing
|
48
|
+
SetTestRepo()
|
49
|
+
End Sub
|
50
|
+
Public Shared Sub Setup(testlist As List(Of <#=tbl.ClassName#>))
|
51
|
+
SetTestRepo()
|
52
|
+
_testRepo._items = testlist
|
53
|
+
End Sub
|
54
|
+
Public Shared Sub Setup(item As <#=tbl.ClassName#>)
|
55
|
+
SetTestRepo()
|
56
|
+
_testRepo._items.Add(item)
|
57
|
+
End Sub
|
58
|
+
Public Shared Sub Setup(testItems As Integer)
|
59
|
+
SetTestRepo()
|
60
|
+
For i As Integer = 0 To testItems - 1
|
61
|
+
Dim item As New <#=tbl.ClassName#>()
|
62
|
+
_testRepo._items.Add(item)
|
63
|
+
Next i
|
64
|
+
End Sub
|
65
|
+
|
66
|
+
Public TestMode As Boolean = False
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
Private _repo As IRepository(Of <#=tbl.ClassName#>)
|
71
|
+
Private tbl As ITable
|
72
|
+
Private _isNew As Boolean
|
73
|
+
Public Function IsNew() As Boolean Implements IActiveRecord.IsNew
|
74
|
+
Return _isNew
|
75
|
+
End Function
|
76
|
+
Public Sub SetIsNew(isNew As Boolean) Implements IActiveRecord.SetIsNew
|
77
|
+
_isNew=isNew
|
78
|
+
End Sub
|
79
|
+
Private _isLoaded As Boolean
|
80
|
+
Public Function IsLoaded() As Boolean Implements IActiveRecord.IsLoaded
|
81
|
+
Return _isLoaded
|
82
|
+
End Function
|
83
|
+
|
84
|
+
Private _dirtyColumns As List(Of IColumn)
|
85
|
+
Public Function IsDirty() As Boolean Implements IActiveRecord.IsDirty
|
86
|
+
Return _dirtyColumns.Count > 0
|
87
|
+
End Function
|
88
|
+
|
89
|
+
Public Function GetDirtyColumns() As List(Of IColumn) Implements IActiveRecord.GetDirtyColumns
|
90
|
+
Return _dirtyColumns
|
91
|
+
End Function
|
92
|
+
|
93
|
+
Private _db As <#=Namespace#>.<#=DatabaseName#>DB
|
94
|
+
Public Sub New(connectionString As String, providerName As String)
|
95
|
+
_db = New <#=Namespace#>.<#=DatabaseName#>DB(connectionString, providerName)
|
96
|
+
Init()
|
97
|
+
End Sub
|
98
|
+
Private Sub Init()
|
99
|
+
TestMode = Me._db.Provider.ConnectionString.Equals("test", StringComparison.InvariantCultureIgnoreCase)
|
100
|
+
_dirtyColumns = New List(Of IColumn)()
|
101
|
+
If TestMode Then
|
102
|
+
<#=tbl.ClassName#>.SetTestRepo()
|
103
|
+
_repo=_testRepo
|
104
|
+
Else
|
105
|
+
_repo = New SubSonicRepository(Of <#=tbl.ClassName#>)(_db)
|
106
|
+
End If
|
107
|
+
tbl=_repo.GetTable()
|
108
|
+
_isNew = True
|
109
|
+
OnCreated()
|
110
|
+
|
111
|
+
End Sub
|
112
|
+
|
113
|
+
Public Sub New()
|
114
|
+
_db = New <#=Namespace#>.<#=DatabaseName#>DB()
|
115
|
+
Init()
|
116
|
+
End Sub
|
117
|
+
|
118
|
+
|
119
|
+
Private Partial Sub OnCreated()
|
120
|
+
End Sub
|
121
|
+
|
122
|
+
Private Partial Sub OnLoaded()
|
123
|
+
End Sub
|
124
|
+
|
125
|
+
Private Partial Sub OnSaved()
|
126
|
+
End Sub
|
127
|
+
|
128
|
+
Private Partial Sub OnChanged()
|
129
|
+
End Sub
|
130
|
+
|
131
|
+
Public ReadOnly Property Columns As IList(Of IColumn)
|
132
|
+
Get
|
133
|
+
Return tbl.Columns
|
134
|
+
End Get
|
135
|
+
End Property
|
136
|
+
|
137
|
+
Public Sub New(expression As Expression(Of Func(Of <#=tbl.ClassName#>, Boolean)))
|
138
|
+
MyBase.New()
|
139
|
+
_isLoaded=_repo.Load(Me,expression)
|
140
|
+
If _isLoaded Then OnLoaded()
|
141
|
+
End Sub
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
Friend Shared Function GetRepo(connectionString As String, providerName As String) As IRepository(Of <#=tbl.ClassName#>)
|
146
|
+
Dim db As <#=Namespace#>.<#=DatabaseName#>DB
|
147
|
+
If String.IsNullOrEmpty(connectionString)
|
148
|
+
db = New <#=Namespace#>.<#=DatabaseName#>DB()
|
149
|
+
Else
|
150
|
+
db = New <#=Namespace#>.<#=DatabaseName#>DB(connectionString, providerName)
|
151
|
+
End If
|
152
|
+
Dim _repo As IRepository(Of <#=tbl.ClassName#>)
|
153
|
+
|
154
|
+
If db.TestMode Then
|
155
|
+
<#=tbl.ClassName#>.SetTestRepo()
|
156
|
+
_repo = _testRepo
|
157
|
+
Else
|
158
|
+
_repo = New SubSonicRepository(Of <#=tbl.ClassName#>)(db)
|
159
|
+
End If
|
160
|
+
Return _repo
|
161
|
+
End Function
|
162
|
+
|
163
|
+
Friend Shared Function GetRepo() As IRepository(Of <#=tbl.ClassName#>)
|
164
|
+
Return GetRepo(String.Empty,String.Empty)
|
165
|
+
End Function
|
166
|
+
|
167
|
+
Public Shared Function SingleOrDefault(expression As Expression(Of Func(Of <#=tbl.ClassName#>, Boolean))) As <#=tbl.ClassName#>
|
168
|
+
|
169
|
+
Dim repo = GetRepo()
|
170
|
+
Dim results = repo.Find(expression)
|
171
|
+
Dim singleItem As <#=tbl.ClassName#> = Nothing
|
172
|
+
If results.Count() > 0 Then
|
173
|
+
singleItem = results.ToList()(0)
|
174
|
+
singleItem.OnLoaded()
|
175
|
+
singleItem.SetIsLoaded(true)
|
176
|
+
End If
|
177
|
+
|
178
|
+
Return singleItem
|
179
|
+
End Function
|
180
|
+
|
181
|
+
Public Shared Function SingleOrDefault(expression As Expression(Of Func(Of <#=tbl.ClassName#>, Boolean)), _
|
182
|
+
connectionString As String, _
|
183
|
+
providerName As String) As <#=tbl.ClassName#>
|
184
|
+
Dim repo = GetRepo(connectionString,providerName)
|
185
|
+
Dim results = repo.Find(expression)
|
186
|
+
Dim singleItem As <#=tbl.ClassName#> = Nothing
|
187
|
+
If results.Count() > 0 Then
|
188
|
+
singleItem = results.ToList()(0)
|
189
|
+
singleItem.OnLoaded()
|
190
|
+
singleItem.SetIsLoaded(true)
|
191
|
+
End If
|
192
|
+
|
193
|
+
Return singleItem
|
194
|
+
End Function
|
195
|
+
|
196
|
+
|
197
|
+
Public Shared Function Exists(expression As Expression(Of Func(Of <#=tbl.ClassName#>, Boolean)), connectionString As String, providerName As String) As Boolean
|
198
|
+
Return All(connectionString,providerName).Any(expression)
|
199
|
+
End Function
|
200
|
+
|
201
|
+
Public Shared Function Exists(expression As Expression(Of Func(Of <#=tbl.ClassName#>, Boolean))) As Boolean
|
202
|
+
Return All().Any(expression)
|
203
|
+
End Function
|
204
|
+
|
205
|
+
Public Shared Function Find(expression As Expression(Of Func(Of <#=tbl.ClassName#>, Boolean))) As IList(Of <#=tbl.ClassName#>)
|
206
|
+
Dim repo = GetRepo()
|
207
|
+
Return repo.Find(expression).ToList()
|
208
|
+
End Function
|
209
|
+
|
210
|
+
Public Shared Function Find(expression As Expression(Of Func(Of <#=tbl.ClassName#>, Boolean)), connectionString As String, providerName As String) As IList(Of <#=tbl.ClassName#>)
|
211
|
+
Dim repo = GetRepo(connectionString,providerName)
|
212
|
+
Return repo.Find(expression).ToList()
|
213
|
+
End Function
|
214
|
+
Public Shared Function All(connectionString As String, providerName As String) As IQueryable(Of <#=tbl.ClassName#>)
|
215
|
+
Return GetRepo(connectionString,providerName).GetAll()
|
216
|
+
End Function
|
217
|
+
Public Shared Function All() As IQueryable(Of <#=tbl.ClassName#>)
|
218
|
+
Return GetRepo().GetAll()
|
219
|
+
End Function
|
220
|
+
|
221
|
+
Public Shared Function GetPaged(sortBy As String, pageIndex As Integer, pageSize As Integer, connectionString As String, providerName As String) As PagedList(Of <#=tbl.ClassName#>)
|
222
|
+
Return GetRepo(connectionString,providerName).GetPaged(sortBy, pageIndex, pageSize)
|
223
|
+
End Function
|
224
|
+
|
225
|
+
Public Shared Function GetPaged(sortBy As String, pageIndex As Integer, pageSize As Integer) As PagedList(Of <#=tbl.ClassName#>)
|
226
|
+
Return GetRepo().GetPaged(sortBy, pageIndex, pageSize)
|
227
|
+
End Function
|
228
|
+
|
229
|
+
Public Shared Function GetPaged(pageIndex As Integer, pageSize As Integer, connectionString As String, providerName As String) As PagedList(Of <#=tbl.ClassName#>)
|
230
|
+
Return GetRepo(connectionString,providerName).GetPaged(pageIndex, pageSize)
|
231
|
+
End Function
|
232
|
+
|
233
|
+
Public Shared Function GetPaged(pageIndex As Integer, pageSize As Integer) As PagedList(Of <#=tbl.ClassName#>)
|
234
|
+
Return GetRepo().GetPaged(pageIndex, pageSize)
|
235
|
+
End Function
|
236
|
+
|
237
|
+
Public Function KeyName() As String Implements IActiveRecord.KeyName
|
238
|
+
Return "<#=tbl.PK.CleanName #>"
|
239
|
+
End Function
|
240
|
+
|
241
|
+
Public Function KeyValue() As Object Implements IActiveRecord.KeyValue
|
242
|
+
Return Me.<#=tbl.PK.CleanName#>
|
243
|
+
End Function
|
244
|
+
|
245
|
+
Public Sub SetKeyValue(value As Object) Implements IActiveRecord.SetKeyValue
|
246
|
+
If value IsNot Nothing AndAlso value IsNot DBNull.Value Then
|
247
|
+
Dim settable = value.ChangeTypeTo(Of <#=tbl.PK.SysType#>)()
|
248
|
+
Me.GetType.GetProperty(Me.KeyName()).SetValue(Me, settable, Nothing)
|
249
|
+
End If
|
250
|
+
End Sub
|
251
|
+
|
252
|
+
Public Overrides Function ToString() As String
|
253
|
+
Return Me.<#=tbl.Descriptor.CleanName #>.ToString()
|
254
|
+
End Function
|
255
|
+
|
256
|
+
Public Overrides Function Equals(obj As Object) As Boolean
|
257
|
+
If obj.GetType() Is GetType(<#=tbl.ClassName#>) Then
|
258
|
+
Dim compareItem As <#=tbl.ClassName#> = obj
|
259
|
+
Return compareItem.KeyValue() = Me.KeyValue()
|
260
|
+
Else
|
261
|
+
Return MyBase.Equals(obj)
|
262
|
+
End If
|
263
|
+
End Function
|
264
|
+
|
265
|
+
Public Function DescriptorValue() As String Implements IActiveRecord.DescriptorValue
|
266
|
+
Return Me.<#=tbl.Descriptor.CleanName #>.ToString()
|
267
|
+
End Function
|
268
|
+
|
269
|
+
Public Function DescriptorColumn() As String Implements IActiveRecord.DescriptorColumn
|
270
|
+
Return "<#=tbl.Descriptor.CleanName #>"
|
271
|
+
End Function
|
272
|
+
Public Shared Function GetKeyColumn() As String
|
273
|
+
Return "<#=tbl.PK.CleanName #>"
|
274
|
+
End Function
|
275
|
+
Public Shared Function GetDescriptorColumn() As String
|
276
|
+
Return "<#=tbl.Descriptor.CleanName #>"
|
277
|
+
End Function
|
278
|
+
|
279
|
+
#Region " Foreign Keys "
|
280
|
+
<#
|
281
|
+
List<string> fkCreated = new List<string>();
|
282
|
+
foreach(FKTable fk in tbl.FKTables)
|
283
|
+
{
|
284
|
+
|
285
|
+
if(!ExcludeTables.Contains(fk.OtherTable)){
|
286
|
+
string propName=fk.OtherQueryable;
|
287
|
+
if(fkCreated.Contains(propName))
|
288
|
+
{
|
289
|
+
propName=fk.OtherQueryable+fkCreated.Count.ToString();
|
290
|
+
}
|
291
|
+
|
292
|
+
fkCreated.Add(fk.OtherQueryable);
|
293
|
+
|
294
|
+
|
295
|
+
#>
|
296
|
+
Public ReadOnly Property [<#=propName #>] As IQueryable(Of <#=fk.OtherClass #>)
|
297
|
+
Get
|
298
|
+
Dim repo = <#=Namespace #>.<#=fk.OtherClass#>.GetRepo()
|
299
|
+
Return From items In repo.GetAll() _
|
300
|
+
Where items.<#=fk.OtherColumn#> = _<#=fk.ThisColumn#> _
|
301
|
+
Select items
|
302
|
+
End Get
|
303
|
+
End Property
|
304
|
+
|
305
|
+
<#
|
306
|
+
}
|
307
|
+
}
|
308
|
+
|
309
|
+
#>
|
310
|
+
#End Region
|
311
|
+
|
312
|
+
<#
|
313
|
+
foreach(Column col in tbl.Columns)
|
314
|
+
{
|
315
|
+
|
316
|
+
if (tbl.ClassName == col.CleanName)
|
317
|
+
{
|
318
|
+
col.CleanName += ColumnSuffix;
|
319
|
+
}
|
320
|
+
#>
|
321
|
+
Private _<#=col.CleanName #> As <#=col.SysType #><#=CheckNullable(col)#>
|
322
|
+
Public Property [<#=col.CleanName #>] As <#=col.SysType #><#=CheckNullable(col)#>
|
323
|
+
Get
|
324
|
+
Return _<#=col.CleanName #>
|
325
|
+
End Get
|
326
|
+
Set(value As <#=col.SysType #><#=CheckNullable(col)#>)
|
327
|
+
_<#=col.CleanName #> = value
|
328
|
+
Dim col = tbl.Columns.SingleOrDefault(Function(x) x.Name = "<#=col.Name #>")
|
329
|
+
If col IsNot Nothing Then
|
330
|
+
If Not _dirtyColumns.Any(Function(x) x.Name = col.Name) AndAlso _isLoaded Then
|
331
|
+
_dirtyColumns.Add(col)
|
332
|
+
End If
|
333
|
+
End If
|
334
|
+
OnChanged()
|
335
|
+
End Set
|
336
|
+
End Property
|
337
|
+
|
338
|
+
<#
|
339
|
+
}
|
340
|
+
#>
|
341
|
+
|
342
|
+
|
343
|
+
Public Function GetUpdateCommand() As DbCommand Implements IActiveRecord.GetUpdateCommand
|
344
|
+
<#if(tbl.Columns.Any(x=>x.Name.ToLower()=="modifiedon")){#>
|
345
|
+
If Not _dirtyColumns.Any(Function(x) x.Name.ToLower() = "modifiedon") Then
|
346
|
+
Me.<#=tbl.Columns.Single(x=>x.Name.ToLower()=="modifiedon").CleanName#> = DateTime.Now
|
347
|
+
End If
|
348
|
+
<#}#>
|
349
|
+
If TestMode Then
|
350
|
+
Return _db.Provider.CreateCommand()
|
351
|
+
Else
|
352
|
+
Return Me.ToUpdateQuery(_db.Provider).GetCommand().ToDbCommand()
|
353
|
+
End If
|
354
|
+
End Function
|
355
|
+
Public Function GetInsertCommand() As DbCommand Implements IActiveRecord.GetInsertCommand
|
356
|
+
If TestMode Then
|
357
|
+
Return _db.Provider.CreateCommand()
|
358
|
+
Else
|
359
|
+
Return Me.ToInsertQuery(_db.Provider).GetCommand().ToDbCommand()
|
360
|
+
End If
|
361
|
+
End Function
|
362
|
+
|
363
|
+
Public Function GetDeleteCommand() As DbCommand Implements IActiveRecord.GetDeleteCommand
|
364
|
+
If TestMode Then
|
365
|
+
Return _db.Provider.CreateCommand()
|
366
|
+
Else
|
367
|
+
Return Me.ToDeleteQuery(_db.Provider).GetCommand().ToDbCommand()
|
368
|
+
End If
|
369
|
+
End Function
|
370
|
+
|
371
|
+
|
372
|
+
Public Sub Update() Implements IActiveRecord.Update
|
373
|
+
Update(_db.Provider)
|
374
|
+
End Sub
|
375
|
+
|
376
|
+
Public Sub Update(provider As IDataProvider) Implements IActiveRecord.Update
|
377
|
+
|
378
|
+
<#if(tbl.Columns.Any(x=>x.Name=="ModifiedBy")){#>
|
379
|
+
Me.ModifiedBy = Environment.UserName
|
380
|
+
<#}#>
|
381
|
+
<#if(tbl.Columns.Any(x=>x.Name=="ModifiedOn")){#>
|
382
|
+
Me.ModifiedOn = DateTime.Now
|
383
|
+
<#}#>
|
384
|
+
If Me._dirtyColumns.Count > 0 Then _repo.Update(Me,provider)
|
385
|
+
|
386
|
+
OnSaved()
|
387
|
+
End Sub
|
388
|
+
|
389
|
+
Public Sub Add() Implements IActiveRecord.Add
|
390
|
+
Add(_db.Provider)
|
391
|
+
End Sub
|
392
|
+
|
393
|
+
<#if(tbl.Columns.Any(x=>x.Name=="ModifiedBy")){#>
|
394
|
+
Public Sub Update(username As String)
|
395
|
+
|
396
|
+
Me.ModifiedBy = username
|
397
|
+
Update()
|
398
|
+
|
399
|
+
End Sub
|
400
|
+
Public Sub Update(username As String, provider As IDataProvider)
|
401
|
+
|
402
|
+
Me.ModifiedBy = username
|
403
|
+
Update(provider)
|
404
|
+
End Sub
|
405
|
+
<#}#>
|
406
|
+
|
407
|
+
|
408
|
+
Public Sub Add(provider As IDataProvider) Implements IActiveRecord.Add
|
409
|
+
|
410
|
+
<#if(tbl.Columns.Any(x=>x.Name=="CreatedOn")){#>
|
411
|
+
Me.CreatedOn = DateTime.Now
|
412
|
+
<#}#>
|
413
|
+
<#if(tbl.Columns.Any(x=>x.Name=="CreatedBy")){#>
|
414
|
+
Me.CreatedBy = Environment.UserName
|
415
|
+
<#}#>
|
416
|
+
<#if(tbl.Columns.Any(x=>x.Name=="ModifiedOn")){#>
|
417
|
+
Me.ModifiedOn = DateTime.Now
|
418
|
+
<#}#>
|
419
|
+
<#if(tbl.Columns.Any(x=>x.Name=="ModifiedBy")){#>
|
420
|
+
Me.ModifiedBy = Environment.UserName
|
421
|
+
<#}#>
|
422
|
+
Me.SetKeyValue(_repo.Add(Me,provider))
|
423
|
+
OnSaved()
|
424
|
+
End Sub
|
425
|
+
|
426
|
+
<#if(tbl.Columns.Any(x=>x.Name=="CreatedBy")){#>
|
427
|
+
Public Sub Add(username As String)
|
428
|
+
|
429
|
+
Me.CreatedBy = username
|
430
|
+
Add()
|
431
|
+
|
432
|
+
End Sub
|
433
|
+
Public Sub Add(username As String, provider As IDataProvider)
|
434
|
+
|
435
|
+
Me.CreatedBy = username
|
436
|
+
Add(provider)
|
437
|
+
End Sub
|
438
|
+
<#}#>
|
439
|
+
|
440
|
+
|
441
|
+
Public Sub Save() Implements IActiveRecord.Save
|
442
|
+
Save(_db.Provider)
|
443
|
+
End Sub
|
444
|
+
Public Sub Save(provider As IDataProvider) Implements IActiveRecord.Save
|
445
|
+
If _isNew Then
|
446
|
+
Add(provider)
|
447
|
+
Else
|
448
|
+
Update(provider)
|
449
|
+
End If
|
450
|
+
End Sub
|
451
|
+
|
452
|
+
<#if(tbl.Columns.Any(x=>x.Name=="CreatedBy" || x.Name=="ModifiedBy")){#>
|
453
|
+
Public Sub Save(username As String, provider As IDataProvider)
|
454
|
+
If _isNew Then
|
455
|
+
<#if(tbl.Columns.Any(x=>x.Name=="CreatedBy")){#>
|
456
|
+
Add(username,provider)
|
457
|
+
<#}else{#>
|
458
|
+
Add(provider)
|
459
|
+
<#}#>
|
460
|
+
Else
|
461
|
+
<#if(tbl.Columns.Any(x=>x.Name=="ModifiedBy")){#>
|
462
|
+
Update(username,provider)
|
463
|
+
<#}else{#>
|
464
|
+
Update(provider)
|
465
|
+
<#}#>
|
466
|
+
|
467
|
+
End If
|
468
|
+
|
469
|
+
End Sub
|
470
|
+
<#}#>
|
471
|
+
|
472
|
+
|
473
|
+
Public Sub Delete(provider As IDataProvider)
|
474
|
+
<#if(tbl.HasLogicalDelete()){#>
|
475
|
+
|
476
|
+
Me.<#=tbl.DeleteColumn.CleanName#> = True
|
477
|
+
_repo.Update(Me,provider)
|
478
|
+
|
479
|
+
<#}else{#>
|
480
|
+
|
481
|
+
_repo.Delete(KeyValue())
|
482
|
+
|
483
|
+
<#}#>
|
484
|
+
End Sub
|
485
|
+
|
486
|
+
|
487
|
+
Public Sub Delete() Implements IActiveRecord.Delete
|
488
|
+
Delete(_db.Provider)
|
489
|
+
End Sub
|
490
|
+
|
491
|
+
|
492
|
+
Public Shared Sub Delete(expression As Expression(Of Func(Of <#=tbl.ClassName#>, Boolean)))
|
493
|
+
Dim repo = GetRepo()
|
494
|
+
|
495
|
+
<#if(tbl.HasLogicalDelete()){#>
|
496
|
+
|
497
|
+
Dim items As List(Of <#=tbl.ClassName#>) = repo.GetAll().Where(expression).ToList()
|
498
|
+
items.ForEach(Function(x) x.<#=tbl.DeleteColumn.CleanName#> = True)
|
499
|
+
repo.Update(items)
|
500
|
+
|
501
|
+
<#}else{#>
|
502
|
+
|
503
|
+
repo.DeleteMany(expression)
|
504
|
+
|
505
|
+
<#}#>
|
506
|
+
End Sub
|
507
|
+
|
508
|
+
<#if(tbl.HasLogicalDelete()){#>
|
509
|
+
|
510
|
+
Public Shared Sub Destroy(expression As Func(Of <#=tbl.ClassName#>, Boolean))
|
511
|
+
Dim repo = GetRepo()
|
512
|
+
repo.Delete(expression)
|
513
|
+
End Sub
|
514
|
+
|
515
|
+
Public Shared Sub Destroy(key As Object)
|
516
|
+
Dim repo = GetRepo()
|
517
|
+
repo.Delete(key)
|
518
|
+
End Sub
|
519
|
+
|
520
|
+
Public Shared Sub Destroy(key As Object, provider As IDataProvider)
|
521
|
+
|
522
|
+
Dim repo = GetRepo()
|
523
|
+
repo.Delete(key,provider)
|
524
|
+
|
525
|
+
End Sub
|
526
|
+
|
527
|
+
Public Sub Destroy()
|
528
|
+
_repo.Delete(KeyValue())
|
529
|
+
End Sub
|
530
|
+
Public Sub Destroy(provider As IDataProvider)
|
531
|
+
_repo.Delete(KeyValue(), provider)
|
532
|
+
End Sub
|
533
|
+
<#}#>
|
534
|
+
|
535
|
+
|
536
|
+
Public Sub Load(rdr As IDataReader) Implements IActiveRecord.Load
|
537
|
+
Load(rdr, true)
|
538
|
+
End Sub
|
539
|
+
Public Sub Load(rdr As IDataReader, closeReader As Boolean) Implements IActiveRecord.Load
|
540
|
+
If rdr.Read() Then
|
541
|
+
Try
|
542
|
+
rdr.Load(Me)
|
543
|
+
_isNew = False
|
544
|
+
_isLoaded = True
|
545
|
+
Catch
|
546
|
+
_isLoaded = False
|
547
|
+
Throw
|
548
|
+
End Try
|
549
|
+
Else
|
550
|
+
_isLoaded = False
|
551
|
+
End If
|
552
|
+
|
553
|
+
If closeReader Then rdr.Dispose()
|
554
|
+
|
555
|
+
End Sub
|
556
|
+
End Class
|
557
|
+
<# }
|
558
|
+
}
|
559
|
+
#>
|
560
|
+
End NameSpace
|