前言:
我正在将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" …
我在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) 我的属性绑定数据访问类有一个小问题(更像是一个烦恼)。问题是当读取器中不存在类中相应属性的列时,映射会失败。
这是映射器类:
// 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
我正在使用反射将datareader转换为通用集合列表.任何人都可以建议我为此实现反射的最佳方法吗?我想要最快的路?