Проблема производительности ADO.Net DataService - PullRequest
0 голосов
/ 22 сентября 2010

Мы используем ADO.Net DataService (.Net Framework 4.0, Visual Studio 2010). У нас есть операции выбора, вставки, обновления и удаления.

  • Для выбора у нас есть запросы типа

School school = _context.School.Expand ("Address, ContactPerson, ContactPerson / Details ......"). Где (S => S.Name == "xxx"). SingleOrDefault ();

  • Для вставки

    _context.AddToSchool (школа); _contextSaveChanges ();

    address.SchoolCode = school.Code; //// Адрес имеет отношение к школе

    _context.AddToAddress (адрес);

// Сейчас у нас нет операции каскадной вставки.

  • Для обновления мы используем вот так

    // Каждый раз при обновлении мы создаем объект. Мы сталкиваемся с такими проблемами, как «Контекст уже отслеживает сущность» или «Контекст не отслеживается». Это худшая практика: (

    _context = new DataContext (......)

    AttachObject («Школы», школа); _context.UpdateObject (школа); _context.SaveChanges ();

    Фрагмент кода, который используется для Присоединить объект при обновлении.

    private void AttachObject (строка entitySetName, объектный объект) {

    if (!_container.Entities.Where(entities => entities.Entity == entity).Any())
    {
        _container.AttachTo(entitySetName, entity);
    }
    

    }

  • Для удаления

    // Сейчас у нас нет каскадной операции удаления.

Address address = _context.Address.where (A => A.Code == deleteAddress.Code) .SingleOrDefault ();

_context.DeleteObject (адрес); _context.SaveChanges ();

Это занимает много времени даже в локальной системе. Я боюсь производительности, это нужно запускать на отдельном сервере. Скажите, пожалуйста, как лучше всего использовать «ADO.Net DATASERVICE»

Мне нужен ответ , а не Голосование вниз:)

РЕДАКТИРОВАТЬ : Я проверил с диапазоном 5 строк со столбцом 10 и вложенной таблицей 4. Даже я могу видеть, как пользовательский интерфейс зависает для обновления одной строки на 5 секунд.

1 Ответ

0 голосов
/ 22 сентября 2010

Я бы еще не исключил запрос.

  1. Какой размер данных? Несколько сотен строк, несколько миллионов или несколько сотен миллионов?
  2. Индекс и производительность диска?
  3. Если это удаленный сервер, как там соединение?

Теперь запрос

  1. Убедитесь, что вы не расширяете дублирующиеся данные. Расширяйте только то, что нужно.
  2. Проверьте другие типы данных, которые вы расширяете, возможно, двоичные для изображений и т. Д.

Надеюсь, это поможет.

...