0

我有一个查询,它在不需要参数的地方进行计数/分组(没有 where 子句)。

使用 dapper 运行无参数查询的语法是什么?

var _results = _conn.Query<strongType>("Select Count(columnA) as aCount, ColumnB, ColumnC from mytable group by ColumnB, ColumnC");

不起作用。

我已经尝试了几种不同的方法,但我仍然不断收到“ArgumentNullException 未被用户代码处理”。

试图自己弄清楚,到处搜索,我放弃了。提前致谢。

编辑:下面是 SqlMapper.cs 中引发错误的代码行。这是第 1334 行

il.Emit(OpCodes.Newobj, typeof(T).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, null));

错误详细信息:值不能为空。参数名称:con

4

4 回答 4

4

将单个结果映射回来就可以了:

var a = cnn.Query<int>("select 1").Single()
// a is 1

如果您的查询以某种方式没有返回任何结果,您可能会遇到麻烦,例如:

select count(Id) from 
(
select top 0 1 as Id, 2 as Title
) as X
group by Title

返回 0 个结果,因此Single对空结果集执行 a 是行不通的。

于 2011-08-24T03:35:11.283 回答
0

try

var _results = _conn.Query("Select columnB, Count(columnA) C from mytable group by columnB");

int ColumnB = ((int)_results[0].ColumnB);
int C = ((int)_results[0].C);
于 2011-08-22T22:36:50.387 回答
0

值不能为空。参数名称:con

这是由包括 Dappper、PetaPoco 和 Massive 在内的几个动态 ORM 引发的错误,但通常是相同的问题:确保您在不想包含的属性上使用 [Ignore] 属性。这包括从基类继承的属性。该错误是无用的,但这就是它的意思。

于 2012-08-23T19:14:19.150 回答
0

可能会发生此错误,因为您尝试在返回对象中设置的属性是get-only。当然,Dapper 需要能够设置所有属性。您可能会考虑拥有一个单独的数据库 DTO 对象,然后在从数据库读取后将其转换为您正确不可变的域对象。

改变这个:

public string MyProperty { get; }

对此:

public string MyProperty { get; set; }
于 2016-07-25T16:34:21.320 回答