12

私はDapperを理解しようとしていますが、非常に基本的なものが欠けているようです。誰かがGoogleコードのDapperホームページから取得した次のコードを説明し、From句がない理由とQueryメソッドの2番目のパラメーターを説明できますか(動的)匿名タイプが渡されます。これはどういうわけかコマンドオブジェクトを設定していると思いますが、単なる致命的な用語で説明したいと思います。

ありがとう、スティーブン

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);
4

1 に答える 1

11

最初の2つの例は、おそらくそれらを単純にするために、「実際の」データアクセスを実行しません。
はい、使用されている接続があります(connection.Query(...))が、それがDapperのメソッドを呼び出す唯一の方法であるためです(IDbConnectionインターフェイスを拡張しているため)。

このようなものは完全に有効なSQLコードです:

select 'foo', 1

...テーブルから実際に何も選択せずに、その場で結果を「生成」するだけです。

パラメータと匿名タイプの例:

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

...匿名タイプの形式でSQLパラメータを送信するDapperの機能を示しています。
繰り返しになりますが、クエリは実際にはテーブルから何も選択しません。おそらくそれを単純にするためです。

于 2011-06-16T23:02:32.007 に答える