2011-11-08 16 views
22
では、ExecuteScalar

...はは、ExecuteScalarがDapperの中にあったように見えるDapperの

http://code.google.com/p/dapper-dot-net/issues/attachmentText?id=22&aid=220000000&name=ExecuteScalar.cs&token=9e2fd8899022f507b140ffb883c60e34

はは、ExecuteScalar名前変更または削除されたがありますか?

これは、.Queryまたは.Queryでこれを実現できますか?< T>?

+7

私たちが決して追加しなかったのは、単純に '.Single()'と同じことです。私たちは基本的な実装などを調査しましたが、余分なメソッドを追加することに本当のメリットはありません。 –

+0

.Single()はDapper拡張メソッドとして機能しません。これは.NETフレームワークの基本的な方法ですか? – sgtz

+1

つまり、 'int value = conn.Query (sql、args).Single();'、または 'string value = conn.Query (sql、args).Single();'などです。 –

答えて

19

は、ExecuteScalarはちょうど1.28で追加されました:https://www.nuget.org/packages/Dapper私はバージョンでは、ExecuteScalar < T>を呼び出すことができました

+0

私はこれをちょっと混乱させました。これを正しく理解すれば、Dapperの現在のバージョン(2015年10月8日の1.42)ではスカラーを実行しません。機能は、LINQメソッドのSingle()を使用して実現されます。右? – dotnetguy

+1

1.42にはまだそれがあります。 .SingleCurrent.ExecuteScalar()は.Single()および.First()とは異なる動作をします(特に、レコードが戻ってこない場合はnullを返します)。 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx –

6

1.42.0

public Boolean BeforeToday(DateTime dateInQuestion) 
    { 
     try 
     { 
      using (var conn = new SqlConnection(ConnectionString)) 
      { 
       String sql = @"SELECT CONVERT(bit, CASE WHEN getdate() > @dateParameter THEN 1 ELSE 0 END) AS BeforeToday"; 

       var result = conn.ExecuteScalar<Boolean>(sql, new { dateParameter = dateInQuestion }); 

       return result; 
      } 
     } 
     catch (Exception) 
     { 
      return dateInQuestion < DateTime.Now; 
     } 
    } 
バージョン1.50.4で、私は呼び出すことができました
0

connection.QuerySingle<int>(query,params)

+0

これは完全な答えではありません。私はあなたが担当者を持っているときにコメントすることをお勧めします。 –