0

データベースのレコードを更新する必要がある「製品」オブジェクトがあります。「productCode」を通じて、Linq を使用して更新するオブジェクトを取得します。すべてのプロパティを上書きし、重要なプロパティは上書きせず、変更を保存する最もエレガントな方法はどれですか?

4

1 に答える 1

0

レコードを手動でフェッチするため、とにかく各プロパティにアクセスする必要があります。最も簡単で、最も速く、最もクリーンなコードに対する私の推奨事項:

code = productCode_toChange
using(Entity ent = new Entity())
{
var update = (from x in ent.Products where x.productCode == code select x).First();
update.property1 = product.property1;
update.property2 = product.property2;
// and so on for each property you change
ent.SaveChanges();
}

もちろん、次のことを試すことができます。

using(Entity ent = new Entity())
{  
var update = (from x in ent.Products where x.productCode == code select x).First();
update = product;
ent.SaveChanges();
}

しかし、これが機能しないことはほぼ保証できます。これは、製品がLINQで生成されたテーブルインスタンスの型である場合、製品が更新に書き込もうとするidプロパティを持っているため、例外がスローされるためです。

タイプの適合性をチェックするように注意してください。また、SQLタイプの製品コードはテキストではないことに注意してください。このタイプは比較できないためです。

于 2013-03-01T09:13:57.690 に答える