相关疑难解决方法(0)

如何将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万
查看次数

如何创建通用列表并使用c#中的Select SQL Query填充

我在Visual Studio Express 2012中使用C#.我专门使用桌面应用程序.作为数据库,我使用MySQL

  数据库和MySQL之间的连接工作正常.

  我的疑问是关于搜索并返回结果.

  在我见过的所有示例中,最常见的是在我的类MySQL enter code here连接中创建一个方法,该方法将返回包含搜索结果的列表.我真的不知道这在概念上是否更正确,但似乎非常可以接受.

  我设法做了一个搜索,从我的桌子返回所有客户.但我的大问题是:如何制作这种通用方法?

  例如

  我的表单有一个触发click事件的按钮:

dbConnect = new DBConnect();
dbConnect.OpenConnection();
private List<Clients> listSQLQuery; 
listSQLQuery = dbConnect.Select("select * from  clients");
datagridview.DataSource = listSQLQuery;
Run Code Online (Sandbox Code Playgroud)

我上面使用的方法dboConnect.Select():

public List<Clients> Select(string query)
{        


    //Create a list to store the result
    List<Clients> list = new List<Clients>();
   Clients clients = new Clients();


    //Open connection
    if (this.OpenConnection() == true)
    {
        //Create Command
        MySqlCommand cmd = new MySqlCommand(query, connection);
        //Create a data reader and …
Run Code Online (Sandbox Code Playgroud)

c# list

5
推荐指数
2
解决办法
6036
查看次数

通用 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
查看次数

使用反射将datareader转换为列表的最快方法

我正在使用反射将datareader转换为通用集合列表.任何人都可以建议我为此实现反射的最佳方法吗?我想要最快的路?

c# asp.net

2
推荐指数
1
解决办法
5144
查看次数