2011-11-08 71 views
22
的的ExecuteScalar

它看起來像有一個在的ExecuteScalar小巧玲瓏...是在有小巧玲瓏

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

當時的ExecuteScalar重命名或刪除?

可以這樣現在.Query或.Query < T>實現?剛添加

+7

,我們從來沒有加入一個原因很簡單:'。單()'做同樣的事情。我們調查了底層的實現等,並且添加額外的方法沒有真正的好處。 –

+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

+0

我這個有點困惑,如果我理解正確此,在當前版本的小巧玲瓏(1.42作爲2015年10月8日)沒有執行標量。該功能是通過LINQ方法Single()實現的。對? – dotnetguy

+1

1.42還是有的。它所使用的底層SqlCommand.ExecuteScalar(),它有不同的行爲。單()和。首先()(值得注意的是,它會返回null,如果沒有記錄,回來)。見https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx –

6

我能夠調用的ExecuteScalar < T>與版本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; 
     } 
    } 
0

在1.50.4版本我是能夠調用 connection.QuerySingle<int>(query,params)

+0

這不是一個完整的答案。我建議當你有代表時做出評論。 –