Linq to sql 如果给定一个ID为LINQ的SQL行,如何将其更新为SQL?

Linq to sql 如果给定一个ID为LINQ的SQL行,如何将其更新为SQL?,linq-to-sql,.net-3.5,crud,disconnected,Linq To Sql,.net 3.5,Crud,Disconnected,鉴于此模式: Fruits - FruitID INT PK - FruitName NVARCHAR(30) - FruitStatusID INT NULL FK: Statuses Statuses - StatusID INT PK - StatusName NVARCHAR(30) 如果我手头有一个水果ID(只是一个int,不是水果对象),我如何更新水果名并清空水果状态ID,而不首先从数据库加载水果对象 注意:这让我了解了很多,但我不知

鉴于此模式:

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

Statuses
 - StatusID      INT PK
 - StatusName    NVARCHAR(30)
如果我手头有一个
水果ID
(只是一个int,不是水果对象),我如何更新
水果名
并清空
水果状态ID
,而不首先从数据库加载水果对象

注意:这让我了解了很多,但我不知道如何将FK列设为空


用C#或VB回答,谢谢

这是可行的,但似乎不必要地复杂:

''//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()
当然还有更好的办法


(注意:奇怪的注释语法只适用于代码高层——它不喜欢VB风格的注释)

这感觉像是过早优化的例子。如果您非常关心性能,请使用直接SQL。如果需要,您可以在单个事务中混合使用ado.net命令执行和LINQ to SQL。这是一个简化的示例。另外,如果我可以很容易地避免仅仅为了更新而从数据库中检索记录,我会——我不认为这是过早的。