c# – 提高DAL性能
发布时间:2020-12-16 00:11:46 所属栏目:百科 来源:网络整理
导读:我目前填充业务对象的方式是使用类似于下面的代码段. using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.CDRDatabase)){ using (SqlCommand comm = new SqlCommand(SELECT,conn)) { conn.Open(); using (SqlDataReader r = comm.E
我目前填充业务对象的方式是使用类似于下面的代码段.
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.CDRDatabase)) { using (SqlCommand comm = new SqlCommand(SELECT,conn)) { conn.Open(); using (SqlDataReader r = comm.ExecuteReader(CommandBehavior.CloseConnection)) { while (r.Read()) { Ailias ailias = PopulateFromReader(r); tmpList.Add(ailias); } } } } private static Ailias PopulateFromReader(IDataReader reader) { Ailias ailias = new Ailias(); if (!reader.IsDBNull(reader.GetOrdinal("AiliasId"))) { ailias.AiliasId = reader.GetInt32(reader.GetOrdinal("AiliasId")); } if (!reader.IsDBNull(reader.GetOrdinal("TenantId"))) { ailias.TenantId = reader.GetInt32(reader.GetOrdinal("TenantId")); } if (!reader.IsDBNull(reader.GetOrdinal("Name"))) { ailias.Name = reader.GetString(reader.GetOrdinal("Name")); } if (!reader.IsDBNull(reader.GetOrdinal("Extention"))) { ailias.Extention = reader.GetString(reader.GetOrdinal("Extention")); } return ailias; } 有没有人有任何关于如何改善这样的表现的建议?请记住,对于某些类型,PopulateFromReader包含更多数据库查找,以便完全填充对象. 解决方法
一个明显的变化是取代这种声明:
????ailias.AiliasId = reader.GetInt32(reader.GetOrdinal(“AiliasId”)); 同 ailias.AiliasId = reader.GetInt32(constAiliasId); 其中constAiliasId是一个常数,持有AiliasId字段的序数. 这避免了循环的每次迭代中的序数查找. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |