做以下事情的最佳方法是什么......
conn.Query<Foo>(@"SELECT 1, 2, 'ZEBRA'");
说Foo
有一个像这样的构造函数...
public Foo(Bar test, string zebra)
..And Bar
有这样的构造函数:
public Bar(int one, int two)
这不起作用,这是实现预期结果的最佳方法。
您可以尝试非通用的查询API(更多详细信息请访问https://stackoverflow.com/a/8995135/229949 ):
conn.Query(@"SELECT 1 as one, 2 as two, 'ZEBRA' as zebra")
.Select(_ => new Foo(new Bar(_.one, _.two), _.zebra);
如果他们有像这样的构造函数要求,不要试图直接从Dapper水合成真正的模型。相反,水合成私有/内部类,然后实例化并返回适当的模型。
internal class FooBarQueryModel
{
public string Zebra { get; set; }
public int One { get; set; }
public int Two { get; set; }
}
conn.Query<FooBarQueryModel>(sql).Select(qm => new Foo(new Bar(qm.One, qm.Two), qm.Zebra));