Can I optimize the BuildEntity method more?
protected IEnumerable<GroupTitle> BuildProductGroup()
{
var productGroups = new List<GroupTitle>();
using (var connection = new SqlConnection(_dbConnection))
using (var command = new SqlCommand(_getProductGroups, connection))
{
connection.Open();
command.CommandType = CommandType.StoredProcedure;
using (var reader = command.ExecuteReader())
while(reader.Read())
{
var productGroup = new GroupTitle();
BuildEntity<GroupTitle>(reader, ref productGroup);
productGroups.Add(productGroup);
}
}
return productGroups;
}
protected TEntity BuildEntity<TEntity>(IDataReader reader, TEntity model)
{
var type = model.GetType();
var table = Enumerable.Range(0, reader.FieldCount).Select(reader.GetName).ToArray();
foreach (var column in table)
{
var matchColumnToProperty = type.GetProperties().FirstOrDefault(property => String.Compare(property.Name, column, true) == 0);
if (matchColumnToProperty != null && !reader.IsDBNull(reader.GetOrdinal(matchColumnToProperty.Name)))
matchColumnToProperty.SetValue(model, reader.GetValue(reader.GetOrdinal(matchColumnToProperty.Name)), null);
}
return model;
}