【问题标题】:How do I update a SQL row given an ID with LINQ to SQL?如何使用 LINQ to SQL 更新给定 ID 的 SQL 行?
【发布时间】:2009-05-06 16:01:22
【问题描述】:

鉴于此架构:

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

Statuses
 - StatusID      INT PK
 - StatusName    NVARCHAR(30)

如果我手头有一个 FruitID(只是一个 int,而不是 Fruit 对象),我如何在不先从数据库加载 Fruit 对象的情况下更新 FruitName 并将 FruitStatusID 清空?

注意:this solution 让我走得很远,但我不知道如何清空 FK 列。

用 C# 或 VB 回答,谢谢!

【问题讨论】:

  • 这感觉像是过早优化的情况。如果您担心性能,请使用直接 SQL。如有必要,您可以在单个事务中混合 ado.net 命令执行和 LINQ to SQL。
  • 这是一个简化的例子。此外,如果我可以轻松地避免从数据库中检索记录来更新它,我会——我认为这还为时过早。

标签: linq-to-sql .net-3.5 crud disconnected


【解决方案1】:

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

''//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 风格的 cmets)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    相关资源
    最近更新 更多