2009-05-06 51 views
1

鉴于这种模式:如何使用LINQ to SQL更新一个给定ID的SQL行?

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

Statuses 
- StatusID  INT PK 
- StatusName NVARCHAR(30) 

如果我手上有FruitID(只是一个int,而不是一个水果对象),我该如何更新FruitName和空出FruitStatusID没有首先从数据库中装载水果对象?

注意:this solution让我感觉很远,但我无法弄清楚如何清空FK列。

在C#或VB中的答案,谢谢!

+1

这感觉就像过早优化的情况。如果你关心性能,那就直接用SQL吧。如果需要,您可以在单个事务中将ado.net命令执行和LINQ混合到SQL。 – JohnOpincar 2009-05-06 16:08:51

回答

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风格的注释)