@@ -36,6 +36,36 @@ public override void OnAfterInitColumnTypeMap()
36
36
DbTypeMap . Set < DateTimeOffset ? > ( DbType . DateTimeOffset , StringColumnDefinition ) ;
37
37
}
38
38
39
+ public static string RowVersionTriggerFormat = "{0}RowVersionUpdateTrigger" ;
40
+
41
+ public override string ToPostDropTableStatement ( ModelDefinition modelDef )
42
+ {
43
+ if ( modelDef . RowVersion != null )
44
+ {
45
+ var triggerName = RowVersionTriggerFormat . Fmt ( modelDef . ModelName ) ;
46
+ return "DROP TRIGGER IF EXISTS {0}" . Fmt ( GetQuotedTableName ( triggerName ) ) ;
47
+ }
48
+
49
+ return null ;
50
+ }
51
+
52
+ public override string ToPostCreateTableStatement ( ModelDefinition modelDef )
53
+ {
54
+ if ( modelDef . RowVersion != null )
55
+ {
56
+ var triggerName = RowVersionTriggerFormat . Fmt ( modelDef . ModelName ) ;
57
+ var triggerBody = "SET NEW.{0} = OLD.{0} + 1;" . Fmt (
58
+ modelDef . RowVersion . FieldName . SqlColumn ( ) ) ;
59
+
60
+ var sql = "CREATE TRIGGER {0} BEFORE UPDATE ON {1} FOR EACH ROW BEGIN {2} END;" . Fmt (
61
+ triggerName , modelDef . ModelName , triggerBody ) ;
62
+
63
+ return sql ;
64
+ }
65
+
66
+ return null ;
67
+ }
68
+
39
69
public override string GetQuotedValue ( string paramValue )
40
70
{
41
71
return "'" + paramValue . Replace ( "\\ " , "\\ \\ " ) . Replace ( "'" , @"\'" ) + "'" ;
@@ -175,7 +205,7 @@ public string GetColumnDefinition(FieldDefinition fieldDefinition)
175
205
return sql . ToString ( ) ;
176
206
}
177
207
178
- return base . GetColumnDefinition (
208
+ var ret = base . GetColumnDefinition (
179
209
fieldDefinition . FieldName ,
180
210
fieldDefinition . ColumnType ,
181
211
fieldDefinition . IsPrimaryKey ,
@@ -186,6 +216,11 @@ public string GetColumnDefinition(FieldDefinition fieldDefinition)
186
216
null ,
187
217
fieldDefinition . DefaultValue ,
188
218
fieldDefinition . CustomFieldDefinition ) ;
219
+
220
+ if ( fieldDefinition . IsRowVersion )
221
+ return ret + " DEFAULT 1" ;
222
+
223
+ return ret ;
189
224
}
190
225
}
191
226
}
0 commit comments