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