繁体   English   中英

从dapper查询将动态转换为对象<dynamic>

[英]Convert dynamic to object from dapper Query<dynamic>

是否可以将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 = ?
}

有什么简单的方法可以从记录中填充MyClass属性? 而不是手动进行?

不会。不幸的是,您必须手动进行操作。 最好的办法是将映射逻辑移到一个位置,以便可以在数据访问层中重新使用它。 我通常使用扩展方法,但是您也可以使用反射来设置匹配的属性名称...但是,以我个人的观点,我通常使用dapper来提高性能,而使用反射有点贵,因此我通常避免使用在这些情况下的反思。

是否可以将Dapper.Query返回的动态变量转换为对象?

是。 如上所述

我知道您可能想简化您的问题,但我想值得指出的是,如果MyClass表示该选择查询返回的记录,则您发布的示例不需要返回动态对象。 您可以简单地执行以下操作...

var data = sql.Query<MyClass>(SELECT * FROM MyClassTable");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM