C #, .Net 2.0: у меня есть класс, который упаковывает одну запись из базы данных, доступ к которой осуществляется через объект OleDbConnection. Это довольно просто, он выполняет "SELECT * FROM table WHERE key = {some value};" а затем выставляет поля как свойства с помощью нескольких методов для манипулирования данными. Когда я создаю новый экземпляр этого объекта, исполняемый код выглядит следующим образом:
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
if (cmd.Connection.State != ConnectionState.Open)
{
cmd.Connection.Close();
cmd.Connection.Open();
}
da.Fill(ds);
return ds.Tables[0];
cmd - это объект OleDbCommand, переданный методу. Когда я выполняю это, около 95% времени, необходимого для создания объекта, находится в вызове da.Fill (ds), согласно профилировщику VS 2008.
У меня также есть класс, представляющий коллекцию этих объектов, который реализует IEnumerable, и при итерации этого объекта с использованием foreach каждый отдельный объект записи создается на лету, и эти операторы da.Fill (ds) быстро складываются.
У меня вопрос: это лучший способ получить одну запись? С другой стороны, есть ли более предпочтительный способ реализации объекта коллекции, поэтому повторение его занимает не так много времени?
Спасибо