![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| 17dufa |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
Вот LINQ to SQL наплодил мне классов по табличкам.
чего хочется - передавать объекты этих классов в качестве Data Transfer Object. в принципе все хорошо, но есть одна бяка: DataContext запоминает те ссылочки, что нагенерил, и лазит их апдейтит. придумал такую штуку, чтоб отвязаться - генерить копии тех объектов, что выдает Data Context и уже с ними работать. они как бы лишним функционалом не обладают. но копировать ручками задалбывает. соответственно вопрос - для подобных объектов есть какие-нить системные функции копирования? то есть вместо:
написать
и при этом лично не писать этот метод Copy. И шоб метод Copy работал без рефлекшина. Можно такое?) или как-то по-подругому от DataContext отвязаться можно? |
||||
|
|||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Не до конца понятна ситуация, чтобы ответить нужно больше информации.
Когда это происходит? DataContext используется один для всех запросов или при каждом запросе создаётся новый? Для какой цели это нужно? -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
| Ram1reS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 25.4.2008 Где: Москва Репутация: 3 Всего: 5 |
Посмотрите например AutoMapper
--------------------
|
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
KelTron, происходит понятное дело после SubmitChanges если были запросы на апдейт. DataContext обновляется раз в N минут, то есть для некоторых запросов он один и тотже. вариант на каждую бизнестранзакцию делать по одному DataContext не обсуждается: слишком мелкие у нас транзакции, повесим сервак постоянным созданием/уничтожением подключений.
для какой цели нужно что? отвязать? потому что влом создавать классы близнецы в качестве Data Transfer Object'ов. у нас ща крайне простое приложение, большинство действий описывается CRUD. вот я и хочу практически результаты селектов возвращать во внешний мир. сейчас получается немного стремно: дайте мне платежи клиента - выдал. допустим эти платежи интерфейс табличкой показал и чего-то замер. в этот момент кто-то взял и поправил эти платежи - как результат когда интерфейс проснеться и просчитает общую сумму платежей - получится значение отличающееся от того, чтоб просуммировать видимую в интерфейсе табличку. ну и подобные редко встречающиеся, но крайне засадные ошибки. Это сообщение отредактировал(а) 17dufa - 26.4.2010, 17:43 |
|||
|
||||
| KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 9 Всего: 38 |
Ну во-первых есть такое понятие как пул подключений...при создании и удалении контекста, подключение не создаётся заново и не уничтожается, а берётся из пула и возвращается в него. Никуда сервак не будет вешаться.
И тем самым создаёте себе массу проблем: - та, что уже озвучена - конфликты параллельного доступа - чем больше данных пропускается через контекст (т.е. чем дольше он живёт), тем он тормознее работает, отслеживая все эти изменения Собственно эти N минут жизни будут вешать сервак сильнее чем постоянное создание контекста для каждого запроса. Я думаю что использование для каждого запроса нового контекста подойдёт для решения проблемы лучше всего. -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |