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,5 @@
1
+ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2
+ <PropertyGroup>
3
+ <ProjectView>ShowAllFiles</ProjectView>
4
+ </PropertyGroup>
5
+ </Project>
@@ -0,0 +1,278 @@
1
+ <#@ include file="Settings.ttinclude" #>
2
+ <#@ assembly name="MySql.Data" #>
3
+ <#@ import namespace="MySql.Data.MySqlClient" #>
4
+ <#+
5
+ MySqlConnection conn;
6
+
7
+
8
+ List<FKTable> LoadFKTables(string tableName){
9
+ string fkSQL=@"SELECT*
10
+ FROM information_schema.KEY_COLUMN_USAGE
11
+ WHERE
12
+ (REFERENCED_TABLE_SCHEMA = (@schema)
13
+ AND REFERENCED_TABLE_NAME =@table
14
+ AND TABLE_NAME is not null
15
+ )
16
+ OR
17
+ (TABLE_SCHEMA = (@schema)
18
+ AND TABLE_NAME =@table
19
+ AND REFERENCED_TABLE_NAME is not null
20
+ )
21
+ ORDER BY TABLE_NAME, COLUMN_NAME;";
22
+
23
+ var result=new List<FKTable>();
24
+
25
+ using(conn=new MySqlConnection(ConnectionString)){
26
+
27
+ var cmd=new MySqlCommand(fkSQL,conn);
28
+ cmd.Parameters.AddWithValue("@table",tableName);
29
+ cmd.Parameters.AddWithValue("@schema",DatabaseName);
30
+ conn.Open();
31
+ var rdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
32
+
33
+ while(rdr.Read()){
34
+ FKTable fk=new FKTable();
35
+ string thisTable=rdr["TABLE_NAME"].ToString();
36
+
37
+ if(tableName.ToLower()==thisTable.ToLower()){
38
+ fk.ThisTable=rdr["TABLE_NAME"].ToString();
39
+ fk.ThisColumn=rdr["COLUMN_NAME"].ToString();
40
+ fk.OtherTable=rdr["REFERENCED_TABLE_NAME"].ToString();
41
+ fk.OtherColumn=rdr["REFERENCED_COLUMN_NAME"].ToString();
42
+
43
+ }else{
44
+ fk.ThisTable=rdr["REFERENCED_TABLE_NAME"].ToString();
45
+ fk.ThisColumn=rdr["REFERENCED_COLUMN_NAME"].ToString();
46
+ fk.OtherTable=rdr["TABLE_NAME"].ToString();
47
+ fk.OtherColumn=rdr["COLUMN_NAME"].ToString();
48
+
49
+ }
50
+
51
+ fk.OtherClass=Inflector.MakeSingular(CleanUp(fk.OtherTable));
52
+ fk.OtherQueryable=Inflector.MakePlural(fk.OtherClass);
53
+
54
+ result.Add(fk);
55
+ }
56
+
57
+
58
+ }
59
+
60
+ return result;
61
+
62
+
63
+ }
64
+
65
+
66
+ List<Table> LoadTables(){
67
+
68
+ var result=new List<Table>();
69
+
70
+ using(conn=new MySqlConnection(ConnectionString)){
71
+ conn.Open();
72
+
73
+ //this will return everything for the DB
74
+ var schema = conn.GetSchema("COLUMNS");
75
+ conn.Close();
76
+
77
+ //spin through once to get all the tables
78
+ foreach (DataRow row in schema.Rows)
79
+ {
80
+ if(!result.Any(x=>x.Name.Equals(row["TABLE_NAME"].ToString(),StringComparison.InvariantCultureIgnoreCase)))
81
+ {
82
+
83
+ //add it
84
+ Table tbl = new Table();
85
+ tbl.PrimaryKey="";
86
+ tbl.Name = row["TABLE_NAME"].ToString();
87
+ tbl.FKTables=LoadFKTables(tbl.Name);
88
+ tbl.CleanName=CleanUp(tbl.Name);
89
+ tbl.ClassName=Inflector.MakeSingular(tbl.CleanName);
90
+ tbl.QueryableName=Inflector.MakePlural(tbl.ClassName);
91
+ result.Add(tbl);
92
+ }
93
+ }
94
+
95
+ //loop again - but this time pull by table name
96
+ foreach (var item in result) {
97
+ item.Columns=new List<Column>();
98
+ //pull the columns from the schema
99
+ var columns = schema.Select("TABLE_NAME='" + item.Name + "'");
100
+
101
+ foreach (var row in columns) {
102
+ Column col=new Column();
103
+ col.Name=row["COLUMN_NAME"].ToString();
104
+ col.CleanName=CleanUp(col.Name);
105
+ col.DataType=row["DATA_TYPE"].ToString();
106
+
107
+ /* Pass the information whether Data Type Unsigned or Not **/
108
+ if (row["COLUMN_TYPE"].ToString().Contains("unsigned"))
109
+ {
110
+ col.DbType=GetDbType(col.DataType+" unsigned");
111
+ col.SysType=GetSysType(col.DataType+" unsigned");
112
+ }
113
+ else{
114
+ col.DbType=GetDbType(col.DataType);
115
+ col.SysType=GetSysType(col.DataType);
116
+ }
117
+
118
+ if (TreatTinyint1AsBool && row["COLUMN_TYPE"].ToString() == "tinyint(1)") {
119
+ col.SysType = "bool";
120
+ col.DbType = DbType.Boolean;
121
+ }
122
+
123
+ col.AutoIncrement=row["EXTRA"].ToString()=="auto_increment";
124
+ col.IsNullable=row["IS_NULLABLE"].ToString()=="YES";
125
+ col.IsPK=row["COLUMN_KEY"].ToString()=="PRI";
126
+
127
+ if(col.IsPK){
128
+ item.PrimaryKey=col.Name ?? "";
129
+ }
130
+
131
+ int.TryParse(row["CHARACTER_MAXIMUM_LENGTH"].ToString(),out col.MaxLength);
132
+
133
+ item.Columns.Add(col);
134
+
135
+ }
136
+ }
137
+ }
138
+
139
+ return result;
140
+ }
141
+
142
+ string GetSysType(string sqlType){
143
+ string sysType="string";
144
+ switch (sqlType) {
145
+ case "bigint unsigned":
146
+ sysType= "ulong";
147
+ break;
148
+ case "bigint":
149
+ sysType= "long";
150
+ break;
151
+ case "mediumint unsigned":
152
+ case "int unsigned":
153
+ sysType= "uint";
154
+ break;
155
+ case "mediumint":
156
+ case "int":
157
+ sysType= "int";
158
+ break;
159
+ case "smallint unsigned":
160
+ sysType= "ushort";
161
+ break;
162
+ case "smallint":
163
+ sysType= "short";
164
+ break;
165
+ case "guid":
166
+ sysType= "Guid";
167
+ break;
168
+ case "smalldatetime":
169
+ case "date":
170
+ case "datetime":
171
+ case "timestamp":
172
+ sysType= "DateTime";
173
+ break;
174
+ case "float":
175
+ sysType="double";
176
+ break;
177
+ case "real":
178
+ case "numeric":
179
+ case "smallmoney":
180
+ case "decimal unsigned":
181
+ case "decimal":
182
+ case "money":
183
+ sysType= "decimal";
184
+ break;
185
+ case "tinyint unsigned":
186
+ sysType= "byte";
187
+ break;
188
+ case "tinyint":
189
+ sysType= "sbyte";
190
+ break;
191
+ case "bit":
192
+ sysType= "bool";
193
+ break;
194
+ case "longblob":
195
+ case "image":
196
+ case "binary":
197
+ case "varbinary":
198
+ sysType= "byte[]";
199
+ break;
200
+ }
201
+ return sysType;
202
+ }
203
+ DbType GetDbType(string sqlType){
204
+ switch(sqlType)
205
+ {
206
+ case "varchar":
207
+ return DbType.AnsiString;
208
+ case "nvarchar":
209
+ return DbType.String;
210
+ case "mediumint unsigned":
211
+ case "int unsigned":
212
+ case "integer unsigned":
213
+ return DbType.UInt32;
214
+ case "mediumint":
215
+ case "int":
216
+ case "integer":
217
+ return DbType.Int32;
218
+ case "guid":
219
+ return DbType.Guid;
220
+ case "date":
221
+ case "timestamp":
222
+ case "datetime":
223
+ return DbType.DateTime;
224
+ case "bigint unsigned":
225
+ return DbType.UInt64;
226
+ case "bigint":
227
+ return DbType.Int64;
228
+ case "binary":
229
+ return DbType.Binary;
230
+ case "bit":
231
+ return DbType.Boolean;
232
+ case "char":
233
+ return DbType.AnsiStringFixedLength;
234
+ case "decimal":
235
+ return DbType.Decimal;
236
+ case "float":
237
+ case "double":
238
+ return DbType.Double;
239
+ case "image":
240
+ return DbType.Binary;
241
+ case "money":
242
+ return DbType.Currency;
243
+ case "nchar":
244
+ return DbType.String;
245
+ case "longtext":
246
+ return DbType.String;
247
+ case "longblob":
248
+ return DbType.Object;
249
+ case "numeric":
250
+ return DbType.Decimal;
251
+ case "real":
252
+ return DbType.Single;
253
+ case "smalldatetime":
254
+ return DbType.DateTime;
255
+ case "smallint unsigned":
256
+ return DbType.UInt16;
257
+ case "smallint":
258
+ return DbType.Int16;
259
+ case "smallmoney":
260
+ return DbType.Currency;
261
+ case "sql_variant":
262
+ return DbType.String;
263
+ case "sysname":
264
+ return DbType.String;
265
+ case "text":
266
+ return DbType.AnsiString;
267
+ case "tinyint unsigned":
268
+ return DbType.Byte;
269
+ case "tinyint":
270
+ return DbType.SByte;
271
+ case "varbinary":
272
+ return DbType.Binary;
273
+ default:
274
+ return DbType.AnsiString;
275
+ }
276
+
277
+ }
278
+ #>
@@ -0,0 +1,303 @@
1
+ <#@ include file="Settings.ttinclude" #>
2
+ <#@ assembly name="MySql.Data" #>
3
+ <#@ import namespace="MySql.Data.MySqlClient" #>
4
+ <#+
5
+ MySqlConnection conn;
6
+
7
+
8
+ List<FKTable> LoadFKTables(string tableName){
9
+ string fkSQL=@"SELECT*
10
+ FROM information_schema.KEY_COLUMN_USAGE
11
+ WHERE
12
+ (REFERENCED_TABLE_SCHEMA = (@schema)
13
+ AND REFERENCED_TABLE_NAME =@table
14
+ AND TABLE_NAME is not null
15
+ )
16
+ OR
17
+ (TABLE_SCHEMA = (@schema)
18
+ AND TABLE_NAME =@table
19
+ AND REFERENCED_TABLE_NAME is not null
20
+ )
21
+ ORDER BY TABLE_NAME, COLUMN_NAME;";
22
+
23
+ var result=new List<FKTable>();
24
+
25
+ using(conn=new MySqlConnection(ConnectionString)){
26
+
27
+ var cmd=new MySqlCommand(fkSQL,conn);
28
+ cmd.Parameters.AddWithValue("@table",tableName);
29
+ cmd.Parameters.AddWithValue("@schema",DatabaseName);
30
+ conn.Open();
31
+ var rdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);
32
+
33
+ while(rdr.Read()){
34
+ FKTable fk=new FKTable();
35
+ string thisTable=rdr["TABLE_NAME"].ToString();
36
+
37
+ if(tableName.ToLower()==thisTable.ToLower()){
38
+ fk.ThisTable=rdr["TABLE_NAME"].ToString();
39
+ fk.ThisColumn=rdr["COLUMN_NAME"].ToString();
40
+ fk.OtherTable=rdr["REFERENCED_TABLE_NAME"].ToString();
41
+ fk.OtherColumn=rdr["REFERENCED_COLUMN_NAME"].ToString();
42
+
43
+ }else{
44
+ fk.ThisTable=rdr["REFERENCED_TABLE_NAME"].ToString();
45
+ fk.ThisColumn=rdr["REFERENCED_COLUMN_NAME"].ToString();
46
+ fk.OtherTable=rdr["TABLE_NAME"].ToString();
47
+ fk.OtherColumn=rdr["COLUMN_NAME"].ToString();
48
+
49
+ }
50
+
51
+ fk.OtherClass=Inflector.MakeSingular(CleanUp(fk.OtherTable));
52
+ fk.OtherQueryable=Inflector.MakePlural(fk.OtherClass);
53
+
54
+ result.Add(fk);
55
+ }
56
+
57
+
58
+ }
59
+
60
+ return result;
61
+
62
+
63
+ }
64
+
65
+
66
+ List<Table> LoadTables(){
67
+
68
+ var result=new List<Table>();
69
+
70
+ using(conn=new MySqlConnection(ConnectionString)){
71
+ conn.Open();
72
+
73
+ //this will return everything for the DB
74
+ var schema = conn.GetSchema("COLUMNS");
75
+ conn.Close();
76
+
77
+ //spin through once to get all the tables
78
+ foreach (DataRow row in schema.Rows)
79
+ {
80
+ if(!result.Any(x=>x.Name.Equals(row["TABLE_NAME"].ToString(),StringComparison.InvariantCultureIgnoreCase)))
81
+ {
82
+
83
+ //add it
84
+ Table tbl = new Table();
85
+ tbl.PrimaryKey="";
86
+ tbl.Name = row["TABLE_NAME"].ToString();
87
+ tbl.FKTables=LoadFKTables(tbl.Name);
88
+ tbl.CleanName=CleanUp(tbl.Name);
89
+ tbl.ClassName=Inflector.MakeSingular(tbl.CleanName);
90
+ tbl.QueryableName=Inflector.MakePlural(tbl.ClassName);
91
+ result.Add(tbl);
92
+ }
93
+ }
94
+
95
+ //loop again - but this time pull by table name
96
+ foreach (var item in result) {
97
+ item.Columns=new List<Column>();
98
+ //pull the columns from the schema
99
+ var columns = schema.Select("TABLE_NAME='" + item.Name + "'");
100
+
101
+ foreach (var row in columns) {
102
+ Column col=new Column();
103
+ col.Name=row["COLUMN_NAME"].ToString();
104
+ col.CleanName=CleanUp(col.Name);
105
+ col.DataType=row["DATA_TYPE"].ToString();
106
+ col.IsUnsigned = row["COLUMN_TYPE"].ToString().Contains(" unsigned");
107
+
108
+ <<<<<<< HEAD
109
+ col.SysType=GetSysType(col.DataType, col.IsUnsigned);
110
+ col.DbType=GetDbType(col.DataType, col.IsUnsigned);
111
+
112
+ =======
113
+ /* Pass the information whether Data Type Unsigned or Not **/
114
+ if (row["COLUMN_TYPE"].ToString().Contains("unsigned"))
115
+ {
116
+ col.DbType=GetDbType(col.DataType+" unsigned");
117
+ col.SysType=GetSysType(col.DataType+" unsigned");
118
+ }
119
+ else{
120
+ col.DbType=GetDbType(col.DataType);
121
+ col.SysType=GetSysType(col.DataType);
122
+ }
123
+
124
+ if (TreatTinyint1AsBool && row["COLUMN_TYPE"].ToString() == "tinyint(1)") {
125
+ col.SysType = "bool";
126
+ col.DbType = DbType.Boolean;
127
+ }
128
+
129
+ >>>>>>> b1f15d7a43e63916c03a365b4d260d43390f2689
130
+ col.AutoIncrement=row["EXTRA"].ToString()=="auto_increment";
131
+ col.IsNullable=row["IS_NULLABLE"].ToString()=="YES";
132
+ col.IsPK=row["COLUMN_KEY"].ToString()=="PRI";
133
+
134
+ if(col.IsPK){
135
+ item.PrimaryKey=col.Name ?? "";
136
+ }
137
+
138
+ int.TryParse(row["CHARACTER_MAXIMUM_LENGTH"].ToString(),out col.MaxLength);
139
+
140
+ item.Columns.Add(col);
141
+
142
+ }
143
+ }
144
+ }
145
+
146
+ return result;
147
+ }
148
+
149
+ string GetSysType(string sqlType, bool isUnsigned){
150
+ string sysType="string";
151
+ switch (sqlType) {
152
+ case "bigint unsigned":
153
+ sysType= "ulong";
154
+ break;
155
+ case "bigint":
156
+ if( isUnsigned )
157
+ sysType= "ulong";
158
+ else
159
+ sysType= "long";
160
+ break;
161
+ case "mediumint unsigned":
162
+ case "int unsigned":
163
+ sysType= "uint";
164
+ break;
165
+ case "mediumint":
166
+ case "int":
167
+ if( isUnsigned )
168
+ sysType= "uint";
169
+ else
170
+ sysType= "int";
171
+ break;
172
+ case "smallint unsigned":
173
+ sysType= "ushort";
174
+ break;
175
+ case "smallint":
176
+ if( isUnsigned )
177
+ sysType= "ushort";
178
+ else
179
+ sysType= "short";
180
+ break;
181
+ case "guid":
182
+ sysType= "Guid";
183
+ break;
184
+ case "smalldatetime":
185
+ case "date":
186
+ case "datetime":
187
+ case "timestamp":
188
+ sysType= "DateTime";
189
+ break;
190
+ case "float":
191
+ sysType="double";
192
+ break;
193
+ case "real":
194
+ case "numeric":
195
+ case "smallmoney":
196
+ case "decimal unsigned":
197
+ case "decimal":
198
+ case "money":
199
+ sysType= "decimal";
200
+ break;
201
+ case "tinyint unsigned":
202
+ sysType= "byte";
203
+ break;
204
+ case "tinyint":
205
+ sysType= "sbyte";
206
+ break;
207
+ case "bit":
208
+ sysType= "bool";
209
+ break;
210
+ case "longblob":
211
+ case "image":
212
+ case "binary":
213
+ case "varbinary":
214
+ sysType= "byte[]";
215
+ break;
216
+ }
217
+ return sysType;
218
+ }
219
+ DbType GetDbType(string sqlType, bool isUnsigned){
220
+ switch(sqlType)
221
+ {
222
+ case "varchar":
223
+ return DbType.AnsiString;
224
+ case "nvarchar":
225
+ return DbType.String;
226
+ case "mediumint unsigned":
227
+ case "int unsigned":
228
+ case "integer unsigned":
229
+ return DbType.UInt32;
230
+ case "mediumint":
231
+ case "int":
232
+ case "integer":
233
+ if( isUnsigned )
234
+ return DbType.UInt32;
235
+ else
236
+ return DbType.Int32;
237
+ case "guid":
238
+ return DbType.Guid;
239
+ case "date":
240
+ case "timestamp":
241
+ case "datetime":
242
+ return DbType.DateTime;
243
+ case "bigint unsigned":
244
+ return DbType.UInt64;
245
+ case "bigint":
246
+ if( isUnsigned )
247
+ return DbType.UInt64;
248
+ else
249
+ return DbType.Int64;
250
+ case "binary":
251
+ return DbType.Binary;
252
+ case "bit":
253
+ return DbType.Boolean;
254
+ case "char":
255
+ return DbType.AnsiStringFixedLength;
256
+ case "decimal":
257
+ return DbType.Decimal;
258
+ case "float":
259
+ case "double":
260
+ return DbType.Double;
261
+ case "image":
262
+ return DbType.Binary;
263
+ case "money":
264
+ return DbType.Currency;
265
+ case "nchar":
266
+ return DbType.String;
267
+ case "longtext":
268
+ return DbType.String;
269
+ case "longblob":
270
+ return DbType.Object;
271
+ case "numeric":
272
+ return DbType.Decimal;
273
+ case "real":
274
+ return DbType.Single;
275
+ case "smalldatetime":
276
+ return DbType.DateTime;
277
+ case "smallint unsigned":
278
+ return DbType.UInt16;
279
+ case "smallint":
280
+ if( isUnsigned )
281
+ return DbType.UInt16;
282
+ else
283
+ return DbType.Int16;
284
+ case "smallmoney":
285
+ return DbType.Currency;
286
+ case "sql_variant":
287
+ return DbType.String;
288
+ case "sysname":
289
+ return DbType.String;
290
+ case "text":
291
+ return DbType.AnsiString;
292
+ case "tinyint unsigned":
293
+ return DbType.Byte;
294
+ case "tinyint":
295
+ return DbType.SByte;
296
+ case "varbinary":
297
+ return DbType.Binary;
298
+ default:
299
+ return DbType.AnsiString;
300
+ }
301
+
302
+ }
303
+ #>