2009-03-02 11 views
0

ベストプラクティスをセットアップ:私はProductオブジェクトを更新するために収集されている多くの分野で大規模なフォームを持っているLINQのBLLの問題を通じて更新 -

。したがって、ASPXページでは、ユーザーは更新が必要なフィールドを変更し、提出します。背後にあるコードでは、私はこのようなことをします。

Dim p as New MyCompany.Product() 
p = p.GetProductById(ProductID) 

私は、これが伸長産物の部分的なクラスのUpdateメソッドである

p.Name = txtName.Text 
p.SKU = txtSKU.Text 
p.Price = txtPrice.Text 
...  
p.Update() 

オブジェクトにこのメソッド(GetProductById)を追加するSQLへのLINQの製品部分クラスを拡張します。データベースを更新し、電子メールを送信し、履歴テーブルを更新するので、この方法ですべての作業を実行します。

プロジェクトのために50個の以上のフィールドがそう明らかにすべての50個のフィールドを収集する方法を有することがばかげだろう(と私はそれがIMOをデバッグするのは難しいです紀元前とにかくそのルートを行くにしたくない)があります

問題:

DataContextを使用してLinq経由で製品を取得した場合、別のDataContextに既に添付されているエンティティやエンティティについてはエラーが発生するため、再度更新することはできません。

質問:

SO

私は私のBLLでメソッドを介してオブジェクトを取得する場合、ASPXページでそれを更新し、再度データベースを更新するために、BLLを通じて更新を送信するために、どのようにすべきであるしてみてください私はこれをすることについて行く?

答えて

0

LINQ-to-SQLに関係なく、ここに私がしていることがあります。提出すると、アイテムを検索します(PKを使用するアイテムが1つの場合はすばやくすべきです)。DALはデータオブジェクトを返し、リフレクションを使用してページ内の各要素をデータオブジェクトの対応するプロパティにマッピングします。私のDALは変更されたアイテムのみを更新します。

あなたがしなければならないことは、すべての価値を集めて提出することと同じだと思います。 LinqToSqlが何が変更されたかを判断するのに十分なほどスマートでない場合、最良の選択肢ではないかもしれません。

+0

この時点でLinqをSQLに使用していないのは、オプションではありません。私はこの1つの問題のために戻って私のアプリケーション全体をやり直すことはできません。あなたの応答をありがとう。 LinqからSQLへの固有の答えを探し続けます。 – EdenMachine