Non voglio fare una lezione personalizzata.
var q = db.Query<dynamic>(query); //This does not work
la query ha join e colonne create su misura da più tabelle.
risposte:
2 per risposta № 1Puoi controllare il metodo "ExecuteReader" di PetaPoco.cs per vedere se assomiglia a qualcosa di simile (vedi il codice sotto):
il mio file non ha alcun codice nella funzione quindiLo modifico dopo l'esecuzione del metodo scalare. questo restituirà un DataTable generico perfettamente associabile a datagrid. tuttavia tieni presente che per apportare eventuali modifiche ai dati sarà necessario implementare i propri metodi CRUD come DataTable risultante è in sola lettura.
//Execute Reader
public DataTable ExecuteReader(string sql, params object[] args)
{
try
{
OpenSharedConnection();
try
{
using (var cmd = CreateCommand(_sharedConnection, sql, args))
{
var val = cmd.ExecuteReader();
OnExecutedCommand(cmd);
var dt = new DataTable();
dt.Load(val);
return dt; //(T)Convert.ChangeType(val, typeof(T));
}
}
finally
{
CloseSharedConnection();
}
}
catch (Exception x)
{
OnException(x);
throw;
}
}
public DataTable ExecuteReader(Sql sql)
{
return ExecuteReader(sql.SQL, sql.Arguments);
}
0 per risposta № 2
Creare una classe che contenga i campi delle due tabelle che si desidera visualizzare nella griglia. Compilare la query con un'istruzione SQL che unisce le tabelle e restituisce le colonne necessarie. Poi
var q=db.Query<YourClassName>.Query(query)
dovrebbe funzionare.
0 per risposta № 3
È possibile creare una vista del database e quindi i modelli T4 genereranno automaticamente la classe per quello. Devi aggiungere
IncludeViews = true;
su Database.tt