1

我不想使用自定义类。

var q = db.Query<dynamic>(query); //This does not work

查询具有来自多个表的连接和自定义创建的列。

4

3 回答 3

2

您可以检查 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);
        }
于 2012-10-01T15:30:38.460 回答
0

创建一个包含要在网格中显示的两个表中的字段的类。使用连接表并返回所需列的 SQL 语句填充您的查询。然后

var q=db.Query<YourClassName>.Query(query)

应该管用。

于 2012-09-05T21:03:51.060 回答
0

您可以创建一个数据库视图,然后 T4 模板会自动为此生成类。您需要添加

IncludeViews = true;

到数据库.tt

于 2012-10-29T05:45:34.817 回答