Это самый быстрый и эффективный способ получения данных из базы данных? - PullRequest
0 голосов
/ 14 марта 2011

Является ли это самым быстрым и эффективным способом извлечения данных из базы данных на уровень бизнес-логики?

public static DataTable Getdata(Guid companyId)
{
    DbCommand command = db.GetStoredProcCommand("dbo.P_GetData");
    db.AddInParameter(command, "@company_id", DbType.Guid, companyId);
    IDataReader reader = db.ExecuteReader(command);
    DataTable data = new DataTable();
    data.Load(reader, LoadOption.OverwriteChanges);
    reader.Close();
    return data;
}

Ответы [ 3 ]

1 голос
/ 14 марта 2011

Это зависит от вашего требования ..

Существует много способов получения данных из базы данных.

В Ado.net можно использовать устройство чтения данных и адаптер данных. И у них обоих есть свои преимущества.

Вы также можете использовать Linq to sql

и проверьте это сравнение производительности: методы доступа к данным

http://msdn.microsoft.com/en-us/library/ms978388.aspx

Привет.

1 голос
/ 21 февраля 2014

В соответствии с критериями nawfal:

По какой-то причине Fill():

dataAdapter.Fill(dataSet);

На быстрее , чем Load():

dataTable.Load(dataReader);

Например, что-то вроде этого может быть в 4-5 раз быстрее, чем у вас:

using (var da = new MySqlDataAdapter())
{
    using (da.SelectCommand = conn.CreateCommand())
    {
        da.SelectCommand.CommandText = query;
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds.Tables[0];
    }
}

См. Его ответ для более подробной информации и контрольных показателей.

0 голосов
/ 14 марта 2011

Предполагая, что вашему логическому уровню требуется DataTable, и игнорируя другие проблемы и требования к кодированию, это, вероятно, достаточно быстро.

У вас есть основания полагать, что это слишком медленно для ваших нужд? Если это так, поэкспериментируйте с разными подходами и не пренебрегайте:

  • логика, используемая хранимой процедурой, выполняющей ваш запрос, и план, который она генерирует
  • количество данных, возвращаемых хранимой процедурой (вам нужно все этих столбцов?)
  • пропускная способность промежуточной сети, если есть

Edit: если бы я делал что-то подобное, если бы я работал с моделью данных разумного размера, и если бы я имел влияние на бизнес-уровень, я бы использовал постоянную среду (например, Entity Framework ), а не прямой ADO.NET. Но я бы сделал это не из соображений производительности - в долгосрочной перспективе уровень персистентности лучше поддерживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...