Как стать автором
Обновить
4
0
Дмитрий Хорошевский @dmitry_h

Пользователь

Отправить сообщение

IEnumerable<T> и IQueryable<T>, в чем разница?

Время на прочтение2 мин
Количество просмотров47K
Уважаемые Хабровчане, решил поделиться одним не очевидным моментом использования LinqToSql, с которым столкнулся некоторое время назад. А именно, про особенности использования каскадных Linq запросов:

Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.

Что имеем (упрощенный вариант модели):


class User {
  public long Id { get; set; }
  public string Name { get; set; }
  public IEnumerable<Parameter> Parameters { get; set; }
}

class Parameter {
  public long UserId { get; set; }
  public string Name { get; set; }
  public string Value { get; set; }
}

Для получения данных написан класс UserRepository:

class UserRepository: MyProjectDataContext {
  public IEnumerable GetUsers() {
    return this.Users.ToModelUsers();
  }
}

static class RepositoryHelper {
  public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
    return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
  }

  public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
    return parameters.Select(u => new Model.Parameter {… });
  }
}

пишем
var users = userRepository.GetUsers().ToList();

смотрим профайлер, и с удивлением обнаруживаем что для загрузки 10 пользователей и их параметров было выполнено целых 11 запросов.
подробности
Всего голосов 64: ↑43 и ↓21+22
Комментарии35

TortoiseSVN & Windows 7

Время на прочтение1 мин
Количество просмотров1.1K
Столкнулся со следующей проблемой при работе на Windows 7 RC build 7100.
Не устанавливаются расширения TortoiseSVN (v1.6.3.16613) для explorer-а, а именно не появляется контекстное меню. Хотя установка самого тортойза проходит успешно.
Из постов, которые нашел на форуме разработчика видно что с проблемой столкнулся не я один. К сожалению я не смог найти решения.
Уважаемые Хабролюди поделитесь опытом, кто сталкивался с подобной проблемой.

P.S.:
У кого SVN нормально встал указывайте пожалуйста версию билда Win7 и Subversion
Всего голосов 11: ↑5 и ↓6-1
Комментарии17

Практика использования LinqToSql: Использование Linq для автоматизации вызовов хранимых процедур.

Время на прочтение3 мин
Количество просмотров4.4K
Последние несколько месяцев моей работы способствовали активному исследованию технологии LinqToSql. Поэтому хочу рассказать о моем опыте, это будет серия небольших заметок которые возможно помогут кому-то быстрее и глубже вникнуть в суть новой концепции доступа к данным, разработанной компанией Microsoft.

Использование Linq для автоматизации вызовов хранимых процедур.


Самый простой способ воспользоваться объектным доступом к данным — это создать dbml-модель БД. Но бывают ситуации, когда производительность является ключевым фактором и получить данные с SQL Server-а можно исключительно хранимой процедурой. В этом случае мы, конечно, можем воспользоваться дизайнером Visual Studio. Но, к сожалению, его функции по конфигурированию параметров вызова хранимых процедур очень ограничены. Меня очень раздражало то, что я не имею возможность руками проставить тип передаваемого параметра.
читать дальше
Всего голосов 29: ↑28 и ↓1+27
Комментарии18

Информация

В рейтинге
Не участвует
Откуда
Калининград (Кенигсберг), Калининградская обл., Россия
Дата рождения
Зарегистрирован
Активность