c# - Dapper 示例代码的说明

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

最佳答案

前两个示例只是不进行任何“真正的”数据访问,可能是为了保持简单。
是的,使用了一个连接 ( connection.Query(...) ),但这只是因为这是调用 Dapper 方法的唯一方法(因为它们扩展了 IDbConnection 接口(interface))。

像这样的是完全有效的 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 .
同样,查询实际上并未从表中选择任何内容,可能是为了保持简单。

关于c# - Dapper 示例代码的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6379478/

相关文章:

c# - 对返回匿名类型的 Response RedirectToRoute 进行单元测试

c# - 从抽象类引用继承的 EntitySet 的 dapper PropInfo Setter 为 null

c# - 带有 DynamicParameters 的 Dapper 自定义 TypeHandler

c# - Dapper 多映射多对多关系

c# - Dapper 对象加上上下文

c# - 如何调试从 TeamCity 部署的 nuget 包?

c# - .Replace(Environment.NewLine, "<br/>") 在本地主机上工作,但在我将我的网站上传到主机时不起作用

c# - 哪个优先 : Don't Repeat Yourself or the Single Responsibility Principle?

C# AES Base64 加密(字符串)

c# - 事务无法通过 Task.WhenAll 处理并行命令