Здравствуйте, SergASh, Вы писали:
SAS>Здравствуйте, IT, Вы писали:
IT>>Я без всяких UoW работаю только на Linq. Включая временные таблицы, хинты, bulk copy и прочее. Иногда приходится дописывать свои хелперы типа на отключение констрейнов, но это мелочи и разовая работа.
SAS>Spinifex не поленился и привел пусть и схематичный, но все же пример. Можете показать как при вашем способе это выглядит на практике?
Не буду утверждать за Игоря, но мой дизайн выглядел бы так. Некоторая гибкость в замене ORM теряется, зато скорость разработки подымается в разы.
Заменять коня на переправе никто не будет. Сейчас главное чтобы продукт вовремя попал на рынок.
Для тестирования сервисов я бы использовал функциональное тестирование — эталонная база, с тестовыми данными, котора в CI подымается с бакапа.
Если уж времени совсем вагон — замокать свои имплементации.
Pros
Убрана лишняя зависимость на UoW — которую придется таки расширять на реальной боевой базе
Performance, который всегда можно быстро тюнать, хоть сторед процедурами
Скорость разаработки — сразу в имплиментации пишем
using (TransactionScope scope = new TransactionScope())
{
if (db.Users.Where(u => u.UserName == dto.UserName).Any())
throw new Exception("User already exists");
db.Users.Insert(new User{UserName = dto.UserName, IsAdmin = dto.IsAdmin, FullName = dto.FullName});
scope.Complete();
}
Все, забыли. Это работает искаропки, можна писать тест
Cons
Сменить ORM уже не просто (а нужно ли)