2009-05-06 4 views
1

dieses Schema Gegeben:Wie aktualisiere ich eine SQL-Zeile mit einer ID mit LINQ to SQL?

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

Statuses 
- StatusID  INT PK 
- StatusName NVARCHAR(30) 

Wenn ich einen FruitID in der Hand haben (nur ein int, kein Obst Objekt), wie ich die FruitName und FruitStatusID aus der Datenbank ohne Laden der Fruit Objekt nullen aktualisiere zuerst ?

Hinweis: this solution bringt mich ziemlich weit, aber ich kann nicht herausfinden, wie man eine FK-Spalte ausnullen.

Antworten in C# oder VB, danke!

+1

Das fühlt sich an wie ein Fall der vorzeitigen Optimierung. Gehen Sie mit direktem SQL, wenn Sie sich Sorgen um die Leistung machen. Sie können die Befehlsausführung von ado.net und LINQ to SQL bei Bedarf in einer einzigen Transaktion mischen. – JohnOpincar

+0

Dies ist ein vereinfachtes Beispiel. Auch wenn ich es leicht vermeiden kann, einen Datensatz aus der Datenbank zu holen, nur um ihn zu aktualisieren, werde ich - ich glaube nicht, dass das zu früh ist. –

Antwort

0

Dies funktioniert aber scheint unnötig kompliziert:

''//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() 

Sicherlich gibt es eine bessere Art und Weise!

(Anmerkung: die seltsame Kommentar Syntax ist ausschließlich für den Code highliger - es ist nicht VB-Stil Kommentare mag)