2009-05-06 2 views
1

は、このスキーマを考える:LINQでIDを与えられたSQL行をSQL​​に更新するにはどうすればよいですか?

Fruits 
- FruitID  INT PK 
- FruitName  NVARCHAR(30) 
- FruitStatusID INT NULL FK: Statuses 

Statuses 
- StatusID  INT PK 
- StatusName NVARCHAR(30) 

私は(ちょうどint型ではなく、フルーツオブジェクト)手にFruitIDを持っている場合は、どのように私はFruitNameを更新し、最初のデータベースからフルーツオブジェクトをロードせずにFruitStatusIDをゼロか?

注:this solutionはかなり遠いですが、FK列を無効にする方法を理解できません。

C#またはVBでの回答、ありがとう!

+1

これは時期尚早の最適化の場合のように感じています。あなたがパフォーマンスを心配しているなら、まっすぐなSQLを使ってください。必要に応じて、ado.netコマンドの実行とLINQをSQLに混在させることができます。 – JohnOpincar

+0

これは簡単な例です。また、データベースを更新するだけでレコードを取得するのを簡単に回避できれば、私はそれが時期尚早だとは思わないでしょう。 –

答えて

0

これは動作しますが、不必要に複雑なようだ:

''//initialize the values I'm going to null out to something 
Dim Tag As Data_Tag = New Data_Tag() With { 
    .Data_Tag_ID = DataTagID, 
    .Last_Error_DateTime = New DateTime(), 
    .Last_Error_Message = "", 
    .Last_Error_Severity_Type_ID = -1 } 

''//start change tracking 
DB.Data_Tags.Attach(Tag) 

''//record changes to these properties (must be initialized above) 
Tag.Last_Error_DateTime = Nothing 
Tag.Last_Error_Message = Nothing 
Tag.Last_Error_Severity_Type_ID = Nothing 

DB.SubmitChanges() 

確かに良い方法があります!

(注:奇妙なコメント構文は、コードhighligerのためだけにある - それはVBスタイルのコメントが好きではありません)

関連する問題