カスタムクラスを使用したくありません。
var q = db.Query<dynamic>(query); //This does not work
クエリには、複数のテーブルからの結合とカスタム作成された列があります。
カスタムクラスを使用したくありません。
var q = db.Query<dynamic>(query); //This does not work
クエリには、複数のテーブルからの結合とカスタム作成された列があります。
PetaPoco.cs の "ExecuteReader" メソッドをチェックして、次のようになっているかどうかを確認できます (以下のコードを参照)。
私のファイルには関数にコードが含まれていなかったため、スカラーメソッドの実行後にモデル化しました。これは、データグリッドに完全にバインド可能な汎用 DataTable を返します。ただし、データに変更を加えるには、結果の DataTable が読み取り専用であるため、独自の CRUD メソッドを実装する必要があることに注意してください。
//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);
}
グリッドに表示する 2 つのテーブルのフィールドを含むクラスを作成します。テーブルを結合して必要な列を返す SQL ステートメントをクエリに入力します。それで
var q=db.Query<YourClassName>.Query(query)
動作するはずです。
データベース ビューを作成すると、T4 テンプレートがそのクラスを自動的に生成します。追加する必要があります
IncludeViews = true;
Database.tt へ