C# 在for循环中创建类构造函数

C# 在for循环中创建类构造函数,c#,asp.net,C#,Asp.net,在循环中创建类是一种好的编码方法吗?也就是说,我调用我的DB来检索所有联系人,在这个循环中,我根据联系人id创建contacts类(它再次调用DB来检索基于id的联系人详细信息)。这是智能编码还是浪费资源 MySqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Contact contact = new Contact(Convert.ToInt32(reader["contactid"]));

在循环中创建类是一种好的编码方法吗?也就是说,我调用我的DB来检索所有联系人,在这个循环中,我根据联系人id创建contacts类(它再次调用DB来检索基于id的联系人详细信息)。这是智能编码还是浪费资源

MySqlDataReader reader = command.ExecuteReader();
while (reader.Read()) {
    Contact contact = new Contact(Convert.ToInt32(reader["contactid"]));
    userString = userString + contact.getSurname();
}

这本身没有什么问题。为什么你要打开一个新的连接并重新阅读联系人?一点命名信息:你不是在循环中创建一个类;您正在循环中创建一个对象,它是该类的一个实例。您应该在读取时获取
Contact
对象所需的所有数据,并通过构造函数或。我将创建一个选择所有联系信息的查询,而不是嵌套的读者方法。谢谢。我遇到的问题是,我始终有映射表。所以一个联系人可以有多个联系人电话。这意味着,从DB的角度来看,存在一个映射\u contact\u phone表,它与phone表具有1对多的关系。所以一个查询对我来说不起作用,因为我得到了多行。我想得到联系人的ID,调用构造函数,然后在那里运行多个单独的数据读取来构建类变量。因此,只关心性能。如果您可以使用实体框架之类的ORM(或Dapper之类的微型ORM),这将使您的生活更加轻松。这本身并没有什么问题。为什么你要打开一个新的连接并重新阅读联系人?一点命名信息:你不是在循环中创建一个类;您正在循环中创建一个对象,它是该类的一个实例。您应该在读取时获取
Contact
对象所需的所有数据,并通过构造函数或。我将创建一个选择所有联系信息的查询,而不是嵌套的读者方法。谢谢。我遇到的问题是,我始终有映射表。所以一个联系人可以有多个联系人电话。这意味着,从DB的角度来看,存在一个映射\u contact\u phone表,它与phone表具有1对多的关系。所以一个查询对我来说不起作用,因为我得到了多行。我想得到联系人的ID,调用构造函数,然后在那里运行多个单独的数据读取来构建类变量。如果你能使用实体框架之类的ORM(或Dapper之类的微型ORM),那么你的生活就会轻松得多。
public Contact(int id) {
    MySqlConnection connection = new MySqlConnection(Global.conn);
    connection.Open();
    MySqlCommand command = connection.CreateCommand();
    string sql = "SELECT * 
                    FROM contact 
                  WHERE contactid=@contactid";
    command.CommandText = sql;
    command.Parameters.AddWithValue("@contactid", id);
    MySqlDataReader reader = command.ExecuteReader();
    while (reader.Read()) {
        FirstName = reader["name"].ToString();
        Surname = reader["Surname"].ToString();
    }
}