2009-08-28 13 views
0

私が見たすべての例では、これを行うことでSQLへのlinqでの更新クエリの実行方法を示しています。LinqをSqLに更新するには?

// grab entity you want to update 

entity.UserId = "123"; // update the fields you want to update. 
entity.Name = "bob"; 

Dbcontext.SubmitChanges(); 

私はあなたが新しいオブジェクトを渡すことができ、それを把握できますか?

私はこれを行うことができますか?

Enity myEntity = new Entity(); 
myEntity.UserId = "123"; 
myEntity.Name = bob: 

    // grab entity record 
    // shove record ito the found record 
    // it figured out what to update and what no to update 

答えて

2

は正確にあなたが何をしたいのかに応じて、あなたのいずれかがInsertOnSubmit方法、またはそれぞれのテーブル(すなわちdbContext.Entities)のAttach方法を必要としています。 InsertOnSubmitはレコードを追加するために使用され、アタッチは、最初にSELECTのレコードを持っていなくてもUPDATEに影響を与えたい場合に使用できます。

+0

linq to sqlまたはこの添付メソッドについてはよく分かりません。私が知っているのは、あなたがレコードをつかんでそこに変更を加えて提出するところで私があなたに示したものです。 – chobo2

0

パフォーマンス上の理由からこれを行うにはあなたはそれについて心配するべきではありません。 Linq to Sqlはオブジェクトをローカルにキャッシュするので、IDでエンティティを取得して一部のフィールドを変更するだけでは非常に安価です。

+0

私は何をしようとしているのが少し遅くなっても構わないと思いますが、asp.net mvcを使って考えていましたが、メソッドのパラメータとして使用することができます。次にそれを渡してください。MyEntity.UserId = MyParamerterEntity.UserId;ちょっと退屈なようです。 – chobo2

0

データベースにアタッチして永続化することはできますが、並行性をチェックするフィールド(LastModified)を設定することができます。

、あなたがエンティティを接続する前に複合/主キーを設定する必要が、データコンテキストにアタッチメソッドを使用しようとしている場合は(あなたがINotifyPropertyChangingを誘発しない、イベントINotifyPropertyChangedの)。あなたが利用可能と準備dbContextを持っている場合は

1

、ちょうどInsertOnSubmitを追加します。メソッドの名前が示すように

Entity myEntity = new Entity(); 
myEntity.UserId = "123"; 
myEntity.Name = bob: 

Dbcontext.InsertOnSubmit(myEntity); 

Dbcontext.SubmitChanges(); 

することは、これはでSubmitChangesを呼び出すことで、データベースに新しいエンティティを挿入します。

マーク

関連する問題