澄清Dapper示例代碼

c# dapper

我試圖找到Dapper並且似乎缺少一些非常基礎的東西,有人可以解釋下面從Google代碼上的Dapper主頁獲取的代碼並解釋為什麼沒有From子句,以及Query方法的第二個參數(動態)傳遞一個匿名類型,我收集這是以某種方式設置一個命令對象,但想用一個凡人的術語解釋。

謝謝你,斯蒂芬

public class Dog {    
    public int? Age { get; set; }    
    public Guid Id { get; set; }    
    public string Name { get; set; }    
    public float? Weight { get; set; }    
    public int IgnoredProperty {
        get { return 1; }
    }
}

var guid = Guid.NewGuid();
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });            

dog.Count().IsEqualTo(1);
dog.First().Age.IsNull();
dog.First().Id.IsEqualTo(guid);

一般承認的答案

前兩個示例只是不進行任何“真正的”數據訪問,可能是為了保持簡單。
是的,使用了連接( connection.Query(...) ),但這只是因為這是調用Dapper方法的唯一方法(因為它們擴展了IDbConnection接口)。

像這樣的東西是完全有效的SQL代碼:

select 'foo', 1

...它只是在運行中“生成”其結果,而無需從表中實際選擇任何內容。

帶參數和匿名類型的示例:

var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });

...只是顯示了Dapper 以匿名類型的形式提交SQL參數的能力。
同樣,查詢實際上並沒有從表中選擇任何東西,可能是為了保持簡單。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因