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,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,117 @@
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 System.ComponentModel;
9
+ using System.Linq;
10
+
11
+ namespace <#=Namespace#>
12
+ {
13
+
14
+
15
+ <# foreach(Table tbl in tables){#>
16
+
17
+ /// <summary>
18
+ /// A class which represents the <#=tbl.Name#> table in the <#=DatabaseName#> Database.
19
+ /// This class is queryable through <#=DatabaseName#>DB.<#=tbl.ClassName#>
20
+ /// </summary>
21
+
22
+ public partial class <#=tbl.ClassName#>: INotifyPropertyChanging, INotifyPropertyChanged
23
+ {
24
+ partial void OnLoaded();
25
+ partial void OnValidate(System.Data.Linq.ChangeAction action);
26
+ partial void OnCreated();
27
+
28
+ public <#=tbl.ClassName#>(){
29
+ OnCreated();
30
+ }
31
+
32
+ #region Properties
33
+
34
+ <# foreach(var col in tbl.Columns){
35
+ if (tbl.ClassName == col.CleanName)
36
+ {
37
+ col.CleanName += "X";
38
+ }
39
+ #>
40
+ partial void On<#=col.CleanName#>Changing(<#=col.SysType#><#=CheckNullable(col)#> value);
41
+ partial void On<#=col.CleanName#>Changed();
42
+
43
+ private <#=col.SysType#><#=CheckNullable(col)#> _<#=col.CleanName#>;
44
+ public <#=col.SysType#><#=CheckNullable(col)#> <#=col.CleanName#> {
45
+ get{
46
+ return _<#=col.CleanName#>;
47
+ }
48
+ set{
49
+ this.On<#=col.CleanName#>Changing(value);
50
+ this.SendPropertyChanging();
51
+ this._<#=col.CleanName#> = value;
52
+ this.SendPropertyChanged("<#=col.CleanName#>");
53
+ this.On<#=col.CleanName#>Changed();
54
+ }
55
+ }
56
+
57
+ <# }#>
58
+
59
+ #endregion
60
+
61
+ #region Foreign Keys
62
+ <#
63
+ List<string> fkCreated = new List<string>();
64
+ foreach(FKTable fk in tbl.FKTables)
65
+ {
66
+
67
+ if(!ExcludeTables.Contains(fk.OtherTable)){
68
+ string propName=fk.OtherQueryable;
69
+ if(fkCreated.Contains(propName))
70
+ {
71
+ propName=fk.OtherQueryable+fkCreated.Count.ToString();
72
+ }
73
+
74
+ fkCreated.Add(fk.OtherQueryable);
75
+
76
+
77
+ #>
78
+ public IQueryable<<#=fk.OtherClass #>> <#=propName #>
79
+ {
80
+ get
81
+ {
82
+ var db=new <#=Namespace #>.<#=DatabaseName#>DB();
83
+ return from items in db.<#=fk.OtherQueryable #>
84
+ where items.<#=fk.OtherColumn#> == _<#=fk.ThisColumn#>
85
+ select items;
86
+ }
87
+ }
88
+
89
+ <#
90
+ }
91
+ }
92
+
93
+ #>
94
+ #endregion
95
+
96
+
97
+ private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
98
+ public event PropertyChangingEventHandler PropertyChanging;
99
+ public event PropertyChangedEventHandler PropertyChanged;
100
+ protected virtual void SendPropertyChanging()
101
+ {
102
+ var handler = PropertyChanging;
103
+ if (handler != null)
104
+ handler(this, emptyChangingEventArgs);
105
+ }
106
+
107
+ protected virtual void SendPropertyChanged(String propertyName)
108
+ {
109
+ var handler = PropertyChanged;
110
+ if (handler != null)
111
+ handler(this, new PropertyChangedEventArgs(propertyName));
112
+ }
113
+
114
+ }
115
+
116
+ <#}#>
117
+ }
@@ -0,0 +1,276 @@
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 System.Data;
9
+ using System.Linq;
10
+ using System.Linq.Expressions;
11
+ using SubSonic.DataProviders;
12
+ using SubSonic.Extensions;
13
+ using SubSonic.Linq.Structure;
14
+ using SubSonic.Query;
15
+ using SubSonic.Schema;
16
+ using System.Data.Common;
17
+ using System.Collections.Generic;
18
+
19
+ namespace <#=Namespace#>
20
+ {
21
+ public partial class <#=DatabaseName#>DB : IQuerySurface
22
+ {
23
+
24
+ public IDataProvider DataProvider;
25
+ public DbQueryProvider provider;
26
+
27
+ public bool TestMode
28
+ {
29
+ get
30
+ {
31
+ return DataProvider.ConnectionString.Equals("test", StringComparison.InvariantCultureIgnoreCase);
32
+ }
33
+ }
34
+
35
+ public <#=DatabaseName#>DB()
36
+ {
37
+ DataProvider = ProviderFactory.GetProvider("<#=ConnectionStringName#>");
38
+ Init();
39
+ }
40
+
41
+ public <#=DatabaseName#>DB(string connectionStringName)
42
+ {
43
+ DataProvider = ProviderFactory.GetProvider(connectionStringName);
44
+ Init();
45
+ }
46
+
47
+ public <#=DatabaseName#>DB(string connectionString, string providerName)
48
+ {
49
+ DataProvider = ProviderFactory.GetProvider(connectionString,providerName);
50
+ Init();
51
+ }
52
+
53
+ public ITable FindByPrimaryKey(string pkName)
54
+ {
55
+ return DataProvider.Schema.Tables.SingleOrDefault(x => x.PrimaryKey.Name.Equals(pkName, StringComparison.InvariantCultureIgnoreCase));
56
+ }
57
+
58
+ public Query<T> GetQuery<T>()
59
+ {
60
+ return new Query<T>(provider);
61
+ }
62
+
63
+ public ITable FindTable(string tableName)
64
+ {
65
+ return DataProvider.FindTable(tableName);
66
+ }
67
+
68
+ public IDataProvider Provider
69
+ {
70
+ get { return DataProvider; }
71
+ set {DataProvider=value;}
72
+ }
73
+
74
+ public DbQueryProvider QueryProvider
75
+ {
76
+ get { return provider; }
77
+ }
78
+
79
+ BatchQuery _batch = null;
80
+ public void Queue<T>(IQueryable<T> qry)
81
+ {
82
+ if (_batch == null)
83
+ _batch = new BatchQuery(Provider, QueryProvider);
84
+ _batch.Queue(qry);
85
+ }
86
+
87
+ public void Queue(ISqlQuery qry)
88
+ {
89
+ if (_batch == null)
90
+ _batch = new BatchQuery(Provider, QueryProvider);
91
+ _batch.Queue(qry);
92
+ }
93
+
94
+ public void ExecuteTransaction(IList<DbCommand> commands)
95
+ {
96
+ if(!TestMode)
97
+ {
98
+ using(var connection = commands[0].Connection)
99
+ {
100
+ if (connection.State == ConnectionState.Closed)
101
+ connection.Open();
102
+
103
+ using (var trans = connection.BeginTransaction())
104
+ {
105
+ foreach (var cmd in commands)
106
+ {
107
+ cmd.Transaction = trans;
108
+ cmd.Connection = connection;
109
+ cmd.ExecuteNonQuery();
110
+ }
111
+ trans.Commit();
112
+ }
113
+ connection.Close();
114
+ }
115
+ }
116
+ }
117
+
118
+ public IDataReader ExecuteBatch()
119
+ {
120
+ if (_batch == null)
121
+ throw new InvalidOperationException("There's nothing in the queue");
122
+ if(!TestMode)
123
+ return _batch.ExecuteReader();
124
+ return null;
125
+ }
126
+ <# //################################################ IQueryable ####################################### #>
127
+ <# foreach(Table tbl in tables){
128
+ if(!ExcludeTables.Contains(tbl.Name))
129
+ {
130
+ #>
131
+ public Query<<#=tbl.ClassName#>> <#=tbl.QueryableName#> { get; set; }
132
+ <#
133
+ }
134
+ }
135
+ #>
136
+
137
+ <# //################################################ Aggregates and Queries ####################################### #>
138
+
139
+ #region ' Aggregates and SubSonic Queries '
140
+ public Select SelectColumns(params string[] columns)
141
+ {
142
+ return new Select(DataProvider, columns);
143
+ }
144
+
145
+ public Select Select
146
+ {
147
+ get { return new Select(this.Provider); }
148
+ }
149
+
150
+ public Insert Insert
151
+ {
152
+ get { return new Insert(this.Provider); }
153
+ }
154
+
155
+ public Update<T> Update<T>() where T:new()
156
+ {
157
+ return new Update<T>(this.Provider);
158
+ }
159
+
160
+ public SqlQuery Delete<T>(Expression<Func<T,bool>> column) where T:new()
161
+ {
162
+ LambdaExpression lamda = column;
163
+ SqlQuery result = new Delete<T>(this.Provider);
164
+ result = result.From<T>();
165
+ result.Constraints=lamda.ParseConstraints().ToList();
166
+ return result;
167
+ }
168
+
169
+ public SqlQuery Max<T>(Expression<Func<T,object>> column)
170
+ {
171
+ LambdaExpression lamda = column;
172
+ string colName = lamda.ParseObjectValue();
173
+ string objectName = typeof(T).Name;
174
+ string tableName = DataProvider.FindTable(objectName).Name;
175
+ return new Select(DataProvider, new Aggregate(colName, AggregateFunction.Max)).From(tableName);
176
+ }
177
+
178
+ public SqlQuery Min<T>(Expression<Func<T,object>> column)
179
+ {
180
+ LambdaExpression lamda = column;
181
+ string colName = lamda.ParseObjectValue();
182
+ string objectName = typeof(T).Name;
183
+ string tableName = this.Provider.FindTable(objectName).Name;
184
+ return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Min)).From(tableName);
185
+ }
186
+
187
+ public SqlQuery Sum<T>(Expression<Func<T,object>> column)
188
+ {
189
+ LambdaExpression lamda = column;
190
+ string colName = lamda.ParseObjectValue();
191
+ string objectName = typeof(T).Name;
192
+ string tableName = this.Provider.FindTable(objectName).Name;
193
+ return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Sum)).From(tableName);
194
+ }
195
+
196
+ public SqlQuery Avg<T>(Expression<Func<T,object>> column)
197
+ {
198
+ LambdaExpression lamda = column;
199
+ string colName = lamda.ParseObjectValue();
200
+ string objectName = typeof(T).Name;
201
+ string tableName = this.Provider.FindTable(objectName).Name;
202
+ return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Avg)).From(tableName);
203
+ }
204
+
205
+ public SqlQuery Count<T>(Expression<Func<T,object>> column)
206
+ {
207
+ LambdaExpression lamda = column;
208
+ string colName = lamda.ParseObjectValue();
209
+ string objectName = typeof(T).Name;
210
+ string tableName = this.Provider.FindTable(objectName).Name;
211
+ return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Count)).From(tableName);
212
+ }
213
+
214
+ public SqlQuery Variance<T>(Expression<Func<T,object>> column)
215
+ {
216
+ LambdaExpression lamda = column;
217
+ string colName = lamda.ParseObjectValue();
218
+ string objectName = typeof(T).Name;
219
+ string tableName = this.Provider.FindTable(objectName).Name;
220
+ return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Var)).From(tableName);
221
+ }
222
+
223
+ public SqlQuery StandardDeviation<T>(Expression<Func<T,object>> column)
224
+ {
225
+ LambdaExpression lamda = column;
226
+ string colName = lamda.ParseObjectValue();
227
+ string objectName = typeof(T).Name;
228
+ string tableName = this.Provider.FindTable(objectName).Name;
229
+ return new Select(this.Provider, new Aggregate(colName, AggregateFunction.StDev)).From(tableName);
230
+ }
231
+
232
+ #endregion
233
+
234
+ void Init()
235
+ {
236
+ provider = new DbQueryProvider(this.Provider);
237
+
238
+ <#
239
+ //################################################ QUERIES ####################################### #>
240
+ #region ' Query Defs '
241
+ <#
242
+ foreach(Table tbl in tables)
243
+ {
244
+ if(!ExcludeTables.Contains(tbl.Name))
245
+ {
246
+ #>
247
+ <#=tbl.QueryableName#> = new Query<<#=tbl.ClassName#>>(provider);
248
+ <#
249
+ }
250
+ #>
251
+ <#
252
+ }
253
+ #>
254
+ #endregion
255
+
256
+ <#//################################################ SCHEMAS ####################################### #>
257
+
258
+ #region ' Schemas '
259
+ if(DataProvider.Schema.Tables.Count == 0)
260
+ {
261
+ <#
262
+ foreach(Table tbl in tables)
263
+ {
264
+ if(!ExcludeTables.Contains(tbl.Name))
265
+ {
266
+ #>
267
+ DataProvider.Schema.Tables.Add(new <#=tbl.CleanName#>Table(DataProvider));
268
+ <#
269
+ }
270
+ }
271
+ #>
272
+ }
273
+ #endregion
274
+ }
275
+ }
276
+ }