我不想使用自定义类。
var q = db.Query<dynamic>(query); //This does not work
查询具有来自多个表的连接和自定义创建的列。
答案 0 :(得分:2)
您可以检查PetaPoco.cs“ExecuteReader”方法,看看它是否像这样(参见下面的代码):
我的文件在函数中没有任何代码,因此我在Execute标量方法之后对其进行建模。 这将返回一个完全可绑定到datagrid的通用DataTable。 但请记住,要对要实现的数据进行任何更改 您自己的CRUD方法,因为生成的DataTable是只读的。
//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);
}
答案 1 :(得分:0)
创建一个类,其中包含要在网格中显示的两个表中的字段。 使用连接表的SQL语句填充查询并返回所需的列。 然后
var q=db.Query<YourClassName>.Query(query)
应该有用。
答案 2 :(得分:0)
您可以创建数据库视图,然后T4模板将自动为其生成类。你需要添加
IncludeViews = true;
到Database.tt