是否可以将从Dapper.Query返回的动态变量转换为对象?例如:
class MyClass
{
public int Id { get; set;}
public string SomeData { get; set; }
}
IEnumerable<dynamic> data = sql.Query<dynamic>(SELECT * FROM MyClassTable");
foreach(var record in data)
{
int parent_id = record.SomeId;
// any simple way to fill MyClass properites from record?
// instead of doing in manually?
MyClass obj = ?
}
答案 0 :(得分:1)
从记录中填写MyClass属性的任何简单方法? 而不是手动做?
没有。不幸的是你必须手动完成它。您可以做的最好的事情是将映射逻辑移动到一个位置,以便您可以在数据访问层中重复使用它。我通常使用扩展方法,但你也可以使用反射来设置匹配的属性名称......但是,在我个人看来,我通常使用dapper来获得性能优势并且使用反射有点贵,因此我通常会避免使用在这些情况下的反思。
是否可以将从Dapper.Query返回的动态变量转换为对象?
是。如上所述
我知道您可能想要简化您的问题,但我想值得指出的是,如果MyClass
表示该选择查询返回的记录,则您发布的示例不需要返回动态对象。你可以简单地做以下......
var data = sql.Query<MyClass>(SELECT * FROM MyClassTable");