0

パラメーターを必要としない場所でカウント/グループ化を行うクエリが 1 つあります (where 句はありません)。

dapper でパラメーターなしのクエリを実行する構文は何ですか?

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

動作しません。

いくつかの方法で試してみましたが、「ArgumentNullException was unhandled by user code」というメッセージが引き続き表示されます。

自分で調べて、いろいろ調べたのですが、あきらめました。前もって感謝します。

編集:以下は、エラーをスローする SqlMapper.cs のコード行です。1334行目です

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

エラーの詳細: 値を 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、空の結果セットに対してを実行しても機能しません。

于 2011-08-24T03:35:11.283 に答える
0

値を null にすることはできません。パラメータ名: 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 に答える
0

試す

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 に答える