【问题标题】:what's the best way to translate a data set to a CLR type [closed]将数据集转换为 CLR 类型的最佳方法是什么[关闭]
【发布时间】:2015-12-09 20:53:38
【问题描述】:

处理数据访问存储库始终返回数据集的遗留应用程序。在这一点上,更改为任何 ORM 框架对我来说不是一个选项,正在寻找将结果集映射到 CLR 类型的最佳选项

【问题讨论】:

    标签: c# .net ado.net dataset


    【解决方案1】:

    我知道有两种简单的方法可以做到这一点。

    1 - 使用Dapper.NET

    const string query = "SELECT * FROM Users";
    return connection.Query<User>(query);
    

    使用 Dapper,您甚至不必担心获取 DataTable,只需查询 SqlConnection 并取回您的类型。

    2 - 使用Automapper:

    List<User> users = AutoMapper.Mapper.DynamicMap<IDataReader, List<User>>(
    sourceDataTable.CreateDataReader());
    

    Automapper 可以将您的 DataTable 映射到您的类型。

    这两种方法都要求您的类具有与源数据中的列名匹配的属性名称。

    我认为它们都可以作为 NuGet 包使用

    【讨论】:

    • 谢谢格伦。类型的属性名称与数据库列名称不匹配,显然,自动映射器已创建映射器来定义映射。我将探索建议的选项并更新此线程
    • 是的,自动映射器允许您定义映射。显然,这也可以通过 Dapper 来实现。见this article。考虑到我可能会选择 Dapper,因为它是专门为此目的而设计的,并且几乎可以肯定需要更少的代码。我不确定 automapper 是否能很好地满足 DataTable 映射。
    猜你喜欢
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2016-05-29
    • 2012-02-29
    相关资源
    最近更新 更多