@@ -64,6 +64,9 @@ public override string GetColumnDefinition(
64
64
string defaultValue ,
65
65
string customFieldDefinition )
66
66
{
67
+ if ( isRowVersion )
68
+ return null ;
69
+
67
70
string fieldDefinition = null ;
68
71
if ( customFieldDefinition != null )
69
72
{
@@ -119,6 +122,37 @@ public override string GetColumnDefinition(
119
122
return sql . ToString ( ) ;
120
123
}
121
124
125
+ public override string GetColumnNames ( ModelDefinition modelDef )
126
+ {
127
+ var sqlColumns = new StringBuilder ( ) ;
128
+ foreach ( var field in modelDef . FieldDefinitions )
129
+ {
130
+ if ( sqlColumns . Length > 0 )
131
+ sqlColumns . Append ( ", " ) ;
132
+
133
+ if ( field . IsRowVersion )
134
+ sqlColumns . Append ( "xmin as " + GetQuotedColumnName ( field . FieldName ) ) ;
135
+ else
136
+ sqlColumns . Append ( GetQuotedColumnName ( field . FieldName ) ) ;
137
+ }
138
+
139
+ return sqlColumns . ToString ( ) ;
140
+ }
141
+
142
+ public override void AppendFieldCondition ( StringBuilder sqlFilter , FieldDefinition fieldDef , IDbCommand cmd )
143
+ {
144
+ var columnName = fieldDef . IsRowVersion
145
+ ? "int8in(xidout(xmin))" //Convert xmin into an integer so it can be used in comparisons
146
+ : GetQuotedColumnName ( fieldDef . FieldName ) ;
147
+
148
+ sqlFilter
149
+ . Append ( columnName )
150
+ . Append ( "=" )
151
+ . Append ( this . GetParam ( SanitizeFieldNameForParamName ( fieldDef . FieldName ) ) ) ;
152
+
153
+ AddParameter ( cmd , fieldDef ) ;
154
+ }
155
+
122
156
public override string GetQuotedValue ( string paramValue )
123
157
{
124
158
return "'" + paramValue . Replace ( "'" , @"''" ) + "'" ;
@@ -248,8 +282,8 @@ public override string GetQuotedTableName(ModelDefinition modelDef)
248
282
/// <returns></returns>
249
283
internal static String ToBinary ( Object NativeData )
250
284
{
251
- Byte [ ] byteArray = ( Byte [ ] ) NativeData ;
252
- StringBuilder res = new StringBuilder ( byteArray . Length * 5 ) ;
285
+ var byteArray = ( Byte [ ] ) NativeData ;
286
+ var res = new StringBuilder ( byteArray . Length * 5 ) ;
253
287
foreach ( byte b in byteArray )
254
288
if ( b >= 0x20 && b < 0x7F && b != 0x27 && b != 0x5C )
255
289
res . Append ( ( char ) b ) ;
0 commit comments