gpt4 book ai didi

c# - 如何正确地将 DataReader 转换为 DTO/List

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:14 25 4
gpt4 key购买 nike

<分区>

我正在尝试找到一种将 DataReader 转换为 DTO 的简单方法(具有与列名一样的属性)。但我想知道反射会如何影响性能,也许有更简单/更清洁的方法来做到这一点。

我一直在寻找 SO 但没有找到合适的解决方案(即使是重复的问题)。

这是我做的“作业”

 public static T ConvertSPToDTO<T>(string procName, List<SqlParameter> parameters) where T : new()
{
T t = new T();
SqlDataReader rs = null;
try
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(procName, conn))
{
foreach (SqlParameter param in parameters)
{
cmd.Parameters.Add(param);
}
cmd.CommandType = CommandType.StoredProcedure;
rs = cmd.ExecuteReader();
List<string> columns = Enumerable.Range(0, rs.FieldCount).Select(rs.GetName).ToList();
while (rs.Read())
{
foreach (string column in columns)
{
if (rs[column] != System.DBNull.Value)
{
t.GetType().GetProperty(column).SetValue(t, Convert.ChangeType(rs[column], rs[column].GetType()), null);
}

}
}
rs.Close();
return t;
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return default(T);
}
finally
{
rs.Dispose();
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com