@@ -212,7 +212,127 @@ private static void DropTables(IDbConnection db)
212
212
db . DropTable < LRDLaboratorio > ( ) ;
213
213
db . DropTable < LRARisultato > ( ) ;
214
214
}
215
+
216
+ private static void InitAliasTables ( IDbConnection db )
217
+ {
218
+ OrmLiteUtils . PrintSql ( ) ;
219
+ db . DropTable < LRDProfiloAnalisi > ( ) ;
220
+ db . DropTable < LRDAnalisi > ( ) ;
221
+ db . DropTable < LRDContenitore > ( ) ;
222
+
223
+ db . CreateTable < LRDContenitore > ( ) ;
224
+ db . CreateTable < LRDAnalisi > ( ) ;
225
+ db . CreateTable < LRDProfiloAnalisi > ( ) ;
226
+
227
+ db . Insert ( new LRDAnalisi
228
+ {
229
+ Codice = "TEST" ,
230
+ Descrizione = "DESCRIPTION"
231
+ } ) ;
232
+
233
+ db . Insert ( new LRDProfiloAnalisi
234
+ {
235
+ AnalisiId = 1 ,
236
+ DataModifica = DateTime . UtcNow ,
237
+ VersioneRecord = 1 ,
238
+ ProfiloAnalisiId = null
239
+ } ) ;
240
+
241
+ }
242
+
243
+ [ Test ]
244
+ public void Table_Alias ( )
245
+ {
246
+ using ( var db = OpenDbConnection ( ) )
247
+ {
248
+ InitAliasTables ( db ) ;
249
+
250
+ var q = db . From < LRDAnalisi > ( db . TableAlias ( "dana" ) )
251
+ . Join < LRDAnalisi , LRDContenitore > ( ( dana , dcont ) => dana . ContenitoreId == dcont . Id , db . TableAlias ( "c" ) )
252
+ . Join < LRDAnalisi , LRDProfiloAnalisi > ( ( dana , dprofana ) => dana . Id == dprofana . AnalisiId , db . TableAlias ( "dprofana" ) )
253
+ . Where < LRDProfiloAnalisi > ( dprofana => Sql . TableAlias ( dprofana . ProfiloAnalisiId , "dprofana" ) == null )
254
+ . SelectDistinct < LRDAnalisi , LRDProfiloAnalisi , LRDContenitore > ( ( dana , dprofana , dcont ) =>
255
+ new //ProfiloAnalisiDTO
256
+ {
257
+ Id = Sql . TableAlias ( dprofana . Id , "dprofana" ) ,
258
+ AnalisiId = dana . Id ,
259
+ Codice = dana . Codice ,
260
+ Descrizione = dana . Descrizione ,
261
+ ContenitoreId = Sql . TableAlias ( dcont . Id , "c" ) ,
262
+ ContenitoreCodice = Sql . TableAlias ( dcont . Codice , "c" ) ,
263
+ ContenitoreDescrizione = Sql . TableAlias ( dcont . Descrizione , "c" ) ,
264
+ VersioneRecord = Sql . TableAlias ( dprofana . VersioneRecord , "dprofana" )
265
+ } ) ;
266
+
267
+ var result = db . Select < ProfiloAnalisiDTO > ( q ) ;
268
+ }
269
+ }
270
+
271
+ [ Test ]
272
+ public void Join_Alias ( )
273
+ {
274
+ using ( var db = OpenDbConnection ( ) )
275
+ {
276
+ InitAliasTables ( db ) ;
277
+
278
+ var q = db . From < LRDAnalisi > ( )
279
+ . Join < LRDAnalisi , LRDContenitore > ( ( dana , dcont ) => dana . ContenitoreId == dcont . Id , db . JoinAlias ( "c" ) )
280
+ . Join < LRDAnalisi , LRDProfiloAnalisi > ( ( dana , dprofana ) => dana . Id == dprofana . AnalisiId , db . JoinAlias ( "dprofana" ) )
281
+ . Where < LRDProfiloAnalisi > ( dprofana => Sql . JoinAlias ( dprofana . ProfiloAnalisiId , "dprofana" ) == null )
282
+ . SelectDistinct < LRDAnalisi , LRDProfiloAnalisi , LRDContenitore > ( ( dana , dprofana , dcont ) =>
283
+ new //ProfiloAnalisiDTO
284
+ {
285
+ Id = Sql . JoinAlias ( dprofana . Id , "dprofana" ) ,
286
+ AnalisiId = dana . Id ,
287
+ Codice = dana . Codice ,
288
+ Descrizione = dana . Descrizione ,
289
+ ContenitoreId = Sql . JoinAlias ( dcont . Id , "c" ) ,
290
+ ContenitoreCodice = Sql . JoinAlias ( dcont . Codice , "c" ) ,
291
+ ContenitoreDescrizione = Sql . JoinAlias ( dcont . Descrizione , "c" ) ,
292
+ VersioneRecord = Sql . JoinAlias ( dprofana . VersioneRecord , "dprofana" )
293
+ } ) ;
294
+
295
+ var result = db . Select < ProfiloAnalisiDTO > ( q ) ;
296
+ }
297
+ }
298
+ }
299
+
300
+ public class ElementoProfiloAnalisiDTO
301
+ {
302
+ public int Id { get ; set ; }
303
+
304
+ public int ProfiloAnalisiId { get ; set ; }
305
+
306
+ public int AnalisiId { get ; set ; }
307
+
308
+ public string CodiceAnalisi { get ; set ; }
309
+
310
+ public string DescrizioneAnalisi { get ; set ; }
311
+
312
+ public int VersioneRecord { get ; set ; }
313
+ }
314
+
315
+ public class ProfiloAnalisiDTO
316
+ {
317
+ public int Id { get ; set ; }
318
+
319
+ public string Codice { get ; set ; }
320
+
321
+ public string Descrizione { get ; set ; }
322
+
323
+ public int ContenitoreId { get ; set ; }
324
+
325
+ public string ContenitoreCodice { get ; set ; }
326
+
327
+ public string ContenitoreDescrizione { get ; set ; }
328
+
329
+ public int VersioneRecord { get ; set ; }
330
+
331
+ public int AnalisiId { get ; set ; }
332
+
333
+ public IEnumerable < ElementoProfiloAnalisiDTO > Elementi { get ; set ; }
215
334
}
335
+
216
336
217
337
public class DBObject : ICloneable
218
338
{
@@ -971,4 +1091,135 @@ public class LRARisultato : DBObject, IHasId<int>
971
1091
[ Alias ( "ADELTARISULTATOPRECEDENTEID" ) ]
972
1092
public int ? DeltaRisultatoPrecedenteId { get ; set ; }
973
1093
}
1094
+
1095
+ [ Alias ( "LRDPROFILOANALISI" ) ]
1096
+ [ CompositeIndex ( "DPROFILOANALISIID" , "DANALISIID" , Unique = true , Name = "IDXPROFILO" ) ]
1097
+ public class LRDProfiloAnalisi : DBObject , IHasId < int >
1098
+ {
1099
+ [ Alias ( "IDDPROFILOANALISI" ) ]
1100
+ [ AutoIncrement ]
1101
+ [ PrimaryKey ]
1102
+ public int Id { get ; set ; }
1103
+
1104
+ [ ApiMember ( Description = "Analisi profilo a cui appartiene l'analisi" ) ]
1105
+ [ Alias ( "DPROFILOANALISIID" ) ]
1106
+ [ References ( typeof ( LRDProfiloAnalisi ) ) ]
1107
+ public int ? ProfiloAnalisiId { get ; set ; } // dove NULL allora DANALISIID e' l'analisi profilo
1108
+
1109
+ [ ApiMember ( Description = "Analisi dal dizionario" ) ]
1110
+ [ Alias ( "DANALISIID" ) ]
1111
+ [ References ( typeof ( LRDAnalisi ) ) ]
1112
+ public int AnalisiId { get ; set ; }
1113
+ }
1114
+
1115
+ [ Alias ( "LRDCONTENITORI" ) ]
1116
+ public class LRDContenitore : DBObject , IHasId < int >
1117
+ {
1118
+ private const int CColore = 7 ; // lunghezza colore HTML es. #AABBCC
1119
+ private const int CPrefisso = 5 ;
1120
+
1121
+ [ Alias ( "IDDCONTENITORE" ) ]
1122
+ [ AutoIncrement ]
1123
+ [ PrimaryKey ]
1124
+ public int Id { get ; set ; }
1125
+
1126
+ [ Alias ( "CODICE" ) ]
1127
+ [ Required ]
1128
+ [ Index ( Unique = true ) ]
1129
+ public string Codice { get ; set ; }
1130
+
1131
+ [ Required ]
1132
+ [ Alias ( "DESCRIZIONE" ) ]
1133
+ public string Descrizione { get ; set ; }
1134
+
1135
+ [ Alias ( "DESCRIZIONEESTESA" ) ]
1136
+ public string DescrizioneEstesa { get ; set ; }
1137
+
1138
+ [ Alias ( "ORDINE" ) ]
1139
+ [ Required ]
1140
+ public int Ordine { get ; set ; }
1141
+
1142
+ [ Required ]
1143
+ [ Alias ( "TIPOCONTENITORE" ) ]
1144
+ public int TipoContenitore { get ; set ; }
1145
+
1146
+ [ Alias ( "COLORE" ) ]
1147
+ [ StringLength ( CColore ) ]
1148
+ public string Colore { get ; set ; }
1149
+
1150
+ [ Alias ( "PREFISSO" ) ]
1151
+ [ StringLength ( CPrefisso ) ]
1152
+ public string Prefisso { get ; set ; }
1153
+
1154
+ [ Alias ( "PROGRESSIVOBARCODEMIN" ) ]
1155
+ [ DecimalLength ( 30 , 0 ) ]
1156
+ public decimal ProgressivoBarcodeMin { get ; set ; }
1157
+
1158
+ [ Alias ( "PROGRESSIVOBARCODEMAX" ) ]
1159
+ [ DecimalLength ( 30 , 0 ) ]
1160
+ [ Default ( int . MaxValue ) ]
1161
+ public decimal ProgressivoBarcodeMax { get ; set ; }
1162
+
1163
+ [ Alias ( "DMATERIALEID" ) ]
1164
+ public int ? MaterialeId { get ; set ; }
1165
+
1166
+ [ Alias ( "DETICHETTAID" ) ]
1167
+ public int ? EtichettaId { get ; set ; }
1168
+
1169
+ [ Required ]
1170
+ [ Alias ( "EMATOLOGIA" ) ]
1171
+ public int Ematologia { get ; set ; }
1172
+
1173
+ [ Required ]
1174
+ [ Alias ( "URINE" ) ]
1175
+ public int Urine { get ; set ; }
1176
+ }
1177
+
1178
+ [ Alias ( "LRDANALISI" ) ]
1179
+ public class LRDAnalisi : DBObject , IHasId < int >
1180
+ {
1181
+ [ Alias ( "IDDANALISI" ) ]
1182
+ [ AutoIncrement ]
1183
+ [ PrimaryKey ]
1184
+ public int Id { get ; set ; }
1185
+
1186
+ [ Alias ( "CODICE" ) ]
1187
+ [ Required ]
1188
+ [ Index ( Unique = true ) ]
1189
+ public string Codice { get ; set ; }
1190
+
1191
+ [ Alias ( "DESCRIZIONE" ) ]
1192
+ [ Required ]
1193
+ public string Descrizione { get ; set ; }
1194
+
1195
+ [ Alias ( "DESCRIZIONEESTESA" ) ]
1196
+ public string DescrizioneEstesa { get ; set ; }
1197
+
1198
+ [ Alias ( "CODICEREGIONALE" ) ]
1199
+ public string CodiceRegionale { get ; set ; }
1200
+
1201
+ [ Alias ( "DCONTENITOREID" ) ]
1202
+ public int ContenitoreId { get ; set ; }
1203
+
1204
+ [ Alias ( "ORDINE" ) ]
1205
+ public int Ordine { get ; set ; }
1206
+
1207
+ [ Alias ( "DMETODOID" ) ]
1208
+ public int ? MetodoId { get ; set ; }
1209
+
1210
+ [ Alias ( "DPANNELLOANALISIID" ) ]
1211
+ public int ? PannelloAnalisiId { get ; set ; }
1212
+
1213
+ [ Alias ( "DCLASSEANALISIID" ) ]
1214
+ public int ? ClasseAnalisiId { get ; set ; }
1215
+
1216
+ [ Alias ( "QCREGISTRAZIONERISULTATI" ) ]
1217
+ public int QCRegistrazioneRisultati { get ; set ; }
1218
+
1219
+ [ Alias ( "QCVERIFICA" ) ]
1220
+ public int QCVerifica { get ; set ; }
1221
+
1222
+ [ Alias ( "QCOREINTERVALLOVERIFICA" ) ]
1223
+ public int ? QCOreIntervalloVerifica { get ; set ; }
1224
+ }
974
1225
}
0 commit comments