使用 Dapper ORM 返回动态类型

233 阅读1分钟

1. 使用查询方法并获取动态类型:

dynamic account = conn.Query<dynamic>(@"
                    SELECT Name, Address, Country
                    FROM Account
            WHERE Id = @Id", new { Id = Id }).FirstOrDefault();
Console.WriteLine(account.Name);
Console.WriteLine(account.Address);
Console.WriteLine(account.Country);

如您所见,您获得了一个动态对象,并且您可以访问其属性,只要它们在查询语句中定义良好。

如果你省略.FirstOrDefault()你会得到一个IEnumerable<dynamic>,你可以用它做任何你想做的事情。

2. 使用作为 C# 7.0 的一部分添加的元组类型

var users = dbConnection
    .Query<(Guid id, string username)>("SELECT id, username From users")
    .AsList();

3. 将每一行转换为IDictionary<string, object>,通过键获取查询值

IEnumerable<dynamic> query = db.Query<dynamic>("SELECT id, username FROM users");
foreach (var rows in query)
{
    var fields = rows as IDictionary<string, object>;
    var id = fields["id"];
    var username = fields["username"];
}