澄清Dapper示例代码

时间:2011-06-16 22:48:55

标签: c# dapper

我正试图找到Dapper并且似乎缺少一些非常基础的东西,有人可以解释以下代码从Google代码的Dapper主页上获取并解释为什么没有From子句,以及查询的第二个参数方法(动态)传递一个匿名类型,我收集这个以某种方式设置一个命令对象,但想用一个凡人的术语解释。

谢谢你, 斯蒂芬

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

1 个答案:

答案 0 :(得分:11)

前两个示例只是不做任何“真正的”数据访问,可能是为了保持简单 是的,使用了连接(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的能力to submit SQL parameters in the form of an anonymous type 同样,查询实际上并没有从表中选择任何内容,可能是为了保持简单。