我目前填充業務對象的方式是使用類似於下面的snipet的東西。提高DAL性能
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包含更多的數據庫查詢以便完全填充對象。
你確實有性能問題嗎?使用DataReader幾乎是最好和最快的方法 - 所有其他方法通常基於DataReader。 – 2009-07-27 11:01:17
在不同的表中發生問題的地方,在PopulateFromReader方法中發生multipul查找。我正在嘗試診斷問題的出處,無論是DAL,服務器(不太可能)的表結構還是帶寬。 – 2009-07-27 11:10:56