Ответ 1
Это действительно полезно в многоуровневых приложениях, которые сериализуют/десериализуют данные на другие слои.
Краткая версия:
Attach()
сообщает DataContext, что объект не является новым (для вставить), но обновленный объект, который должен быть обновлен в БД.
Длинная версия:
У вас есть DataContext, где существуют ваши сущности. Новые объекты вставлены, существующие обновляются. Теперь вам нужно отправить некоторую сущность на другой уровень, DataContext, затем отделяет указанный объект и отправляет его.
На другом уровне объект получает изменения и отправляется обратно на ваш уровень данных. Теперь прежний DataContext, у которого ваш объект больше не существует (например, если он является без гражданства) или не знает вашу десериализованную сущность, так что вы делаете? Вы создаете новый DataContext или используете существующий и используете метод Attach()
- таким образом, DataContext знает, что объект должен быть обновлен > и не должен быть вставлен в базу данных.
То же самое относится к AttachAll()
, но для нескольких объектов.