セットアップ:
製品オブジェクトを更新するために収集される多くのフィールドを持つ大きなフォームがあります。したがって、ASPX ページで、ユーザーは更新が必要なフィールドを変更し、送信を押します。コード ビハインドでは、次のようなことを行います。
Dim p as New MyCompany.Product()
p = p.GetProductById(ProductID)
Linq の Product 部分クラスを SQL に拡張して、このメソッド (GetProductById) をオブジェクトに追加します。
p.Name = txtName.Text
p.SKU = txtSKU.Text
p.Price = txtPrice.Text
...
p.Update()
これは、拡張された Product 部分クラスの Update メソッドです。データベースを更新し、電子メールを送信し、履歴テーブルを更新するので、このメソッドでこれらすべてを実行したいと考えています。
プロジェクトにはさらに 50 個のフィールドがあるため、50 個のフィールドすべてを収集するメソッドを作成するのはばかげていることは明らかです (IMO をデバッグするのが難しいため、とにかくそのルートには行きたくありません)。
問題:
DataContext を使用して Linq to SQL 経由で Product を取得すると、別の DataContext に既にアタッチされているエンティティをアタッチできないというエラーが発生するため、再度更新することはできません。
質問:
BLL のメソッドを介してオブジェクトを取得し、ASPX ページで更新してから、BLL を介して更新を再度送信してデータベースを更新しようとすると、どうすればよいですか?