Настройка:
У меня есть большая форма со многими полями, которые собираются для обновления объекта Product. Таким образом, на странице ASPX пользователь изменяет поля, которые необходимо обновить, и нажимает кнопку Отправить. В коде позади я делаю что-то вроде этого;
Dim p as New MyCompany.Product()
p = p.GetProductById(ProductID)
Я расширяю частичный класс Product Linq до SQL, чтобы добавить этот метод (GetProductById) к объекту
p.Name = txtName.Text
p.SKU = txtSKU.Text
p.Price = txtPrice.Text
...
p.Update()
Это метод Update в расширенном частичном классе Product. Я обновляю базу данных, отправляю электронные письма и обновляю таблицы истории, поэтому хочу, чтобы этот метод делал все это.
Есть еще 50 полей для проекта, поэтому очевидно, что было бы смешно иметь метод, который собирает все 50 полей (и я все равно не хочу идти по этому пути, потому что IMO труднее отлаживать)
Проблема:
Если я получаю Продукт через Linq to SQL с использованием DataContext, то я никогда не смогу обновить его снова, потому что он ошибается из-за невозможности присоединения и объекта, который уже присоединен к другому DataContext.
Вопрос:
ТАК, если я получаю объект с помощью метода в моем BLL, обновляю его на странице ASPX и затем снова пытаюсь отправить обновления через BLL, чтобы обновить базу данных, как мне это сделать?