Beispiel #1
0
 public virtual EntityMaterializer CreateEntityMaterializer(DbTableInfo table, IList<DbColumnInfo> columns)
 {
     var matzr = new EntityMaterializer(table);
       foreach (var col in columns)
     matzr.AddColumn(col);
       return matzr;
 }
 // RI: new stuff, optimized entity reader
 protected virtual Expression GetOutputTableReader(TableExpression tableExpression,
     ParameterExpression dataRecordParameter, ParameterExpression sessionParameter,
     TranslationContext context)
 {
     // Note: we have to create materializer each time, because column indexes in output can change from query to query
       var entMatzer = new EntityMaterializer(tableExpression.TableInfo);
       var allColExprs = RegisterAllColumns(tableExpression, context);
       foreach (var col in allColExprs) {
     var colIndex = RegisterOutputValue(col, context);
     entMatzer.AddColumn(col.ColumnInfo, colIndex);
       }
       var entMatzerConst = Expression.Constant(entMatzer);
       var callReadEntity = Expression.Call(entMatzerConst, EntityMaterializer.ReadMethodInfo, dataRecordParameter, sessionParameter);
       var convExpr = Expression.Convert(callReadEntity, tableExpression.Type);
       return convExpr;
 }