相关疑难解决方法(0)

C# - 使用泛型的IDataReader到Object映射

如何使用泛型将DataReader对象映射到类对象?

例如,我需要执行以下操作:

public class Mapper<T>
    {
        public static List<T> MapObject(IDataReader dr)
        {
            List<T> objects = new List<T>();

            while (dr.Read())
            {
                //Mapping goes here...
            }

            return objects;
        }
    }
Run Code Online (Sandbox Code Playgroud)

后来我需要调用这个类方法,如下所示:

IDataReder dataReader = DBUtil.Fetchdata("SELECT * FROM Book");

List<Book> bookList = Mapper<Book>.MapObject(dataReder);

foreach (Book b in bookList)
{
     Console.WriteLine(b.ID + ", " + b.BookName);
}
Run Code Online (Sandbox Code Playgroud)

注意,Mapper - 类应该能够映射由T表示的任何类型的对象.

c# mapping ado.net automapping

10
推荐指数
1
解决办法
9464
查看次数

如何将DataReader映射到类属性并保持性能?

前言:

  1. 使用DbProviderFactories创建所有数据连接字符串,连接等.
  2. 代码是来自多个库的C#和VB.Net混合.

我正在将DbDataReader映射到实体并具有一些基准:

[0] retrieved 159180 records in 45135 ms
[1] retrieved 159180 records in 45008 ms
[2] retrieved 159180 records in 44814 ms
[3] retrieved 159180 records in 44987 ms
[4] retrieved 159180 records in 44914 ms
[5] retrieved 159180 records in 45224 ms
[6] retrieved 159180 records in 45829 ms
[7] retrieved 159180 records in 60762 ms
[8] retrieved 159180 records in 52128 ms
[9] retrieved 159180 records in 47982 ms  
Run Code Online (Sandbox Code Playgroud)

考虑到从Sql Server Management Studio查询只需要17秒,这是一个非常大的时间和极差.我的选择声明:

"SELECT*FROM tbl_MyTable" …

c# reflection datareader

7
推荐指数
1
解决办法
1万
查看次数

通用 DbDataReader 到 List&lt;T&gt; 映射

我的属性绑定数据访问类有一个小问题(更像是一个烦恼)。问题是当读取器中不存在类中相应属性的列时,映射会失败。

代码

这是映射器类:

// Map our datareader object to a strongly typed list
private static IList<T> Map<T>(DbDataReader dr) where T : new()
{
    try
    {
        // initialize our returnable list
        List<T> list = new List<T>();
        // fire up the lamda mapping
        var converter = new Converter<T>();
        while (dr.Read())
        {
            // read in each row, and properly map it to our T object
            var obj = converter.CreateItemFromRow(dr);
            // add it to our list
            list.Add(obj);
        }
        // reutrn it
        return list;
    } …
Run Code Online (Sandbox Code Playgroud)

c# reflection expression-trees dbdatareader linq-expressions

5
推荐指数
1
解决办法
4155
查看次数