Pull to refresh

Comments 4

во-первых, хотелось бы заметить что термин DLinq уже устарел, сейчас нужно использовать LINQ to SQL.

во-вторых, лично я не сталкивался с проблемами подобной вашей, но могу предположить, что они могут быть. Возможно, заменой rollback может стать повторная инициализация контекста данных, который вернется в первоначальное состояние. Не ахти что, но таков он Linq2Sql.

Как вариант, можно мигрировать на Entity Framework, который более полноценен в плане ORM.
Я бы по ряду причин пока не советовал бы работать с EF. Он отлично работает в маленькой команде/простой задаче. Чуть больше — и болит голова.

Насчет работы с конекстами — мы на работе используем утилитарный класс c методом CreateDataContext — который принимает параметр — для чтения или для записи будет использоваться новый контекст (и в зависимости от этого отключает ненужные фичи).

Так вот когда отключается ObjectTracking и DefferedLoading — тогда можно пользоваться методом Attach.

Хотя конечно мой опыт действует только для Web-приложений. Может, в Winforms все немного по-другому
была хорошая статья несколько месяцев назад как на базе линкью2сиквел построить источник не на паттерне единица работы.
как раз из за того что линкью предполагает этот паттерн и того что вы пытаетесь его обойти все беды)))
у нас похожая ситуация с ентити фрэймворком. у него есть и аттач и детач, но мы так намучались прежде чем разобрались как нормально серелизовать и десерелизовать объекты и отправлять их через вцф например, что хотелось плюнуть и его выбросить
LINQ2SQL и Entity Framework — классический пример того, что инструмент облегчает жизнь, только если его использовать по назначению. Попробуешь L2S в сложных проектах — код обрастет костылями и подпорками для недостающей функциональности. Ну и наоборот, EF в простом проекте — сойдешь с ума, разбирая нюансы маппинга, когда тебе всего-то нужно сделать выборку из нескольких таблиц одной хранимой процедурой.

Хороший пример — мои последние проекты. Первое — простое web приложение. В основном отображает данных по разным условиям плюс чуть-чуть редактирования. LINQ2SQL пошел на ура, кода в несколько раз меньше чем при создании классических слоев хранимых процедур и Data access layer. А вот текущий проект уже сложнее, плюс клиентская часть должна работать в отсоединенном режиме. Вот тут EF + ADO.NET Data Services + Astoria Offline должны сэкономить кучу времени.

Правда перед этим прийдется потратить не меньшую кучу, чтобы со всем этим разобраться :)
Sign up to leave a comment.

Articles