【发布时间】:2018-02-15 09:43:20
【问题描述】:
我正在尝试为Dapper 动态生成和执行 sql,目的是简单地传入一个类型,然后动态生成和执行 sql。
示例类:
public class User
{
[Key]
public int UserId { get; set; }
public Address Address { get; set; }
}
public class Address
{
[Key]
public int UserId { get; set; }
public string PostCode { get; set; }
}
将有效地运行以下内容:
// sql: "SELECT User.UserId, Address.UserId, Address.PostCode FROM User LEFT JOIN Address ON Address.User = User.UserId"... // auto generated from 'User' type including join to 'Address';
connection.Query<User, Address, User>(sql, /*** map argument needs to be dynamic Func<> ***/);
因此,鉴于这些类型 User 和 Address 仅在运行时已知,我如何生成适当的委托 Func<User, Address, User> 以传递给 map 参数?
Func<User, Address, User> map = (u, a) => {
u.Address = a;
return u;
}
我看到使用反射创建Func<> 的examples 假设类型是已知的,在我的情况下它们不是,因此类型参数会有所不同(Func / Func / Func 等)。
任何帮助表示赞赏。我将继续研究使用表达式的示例,看看是否有任何问题。
【问题讨论】:
标签: c# reflection dapper