【问题标题】:How to write to DB using Linq如何使用 Linq 写入数据库
【发布时间】:2012-10-19 16:21:01
【问题描述】:

我有一个带有名为Fruits 的表的数据库。在表中,我有 3 列:NameDateRemove

现在我已经插入了 3 行,其值类似于

Apple----20/10/12----N
Mango----21/12/12----Y
Banana--- 15/07/12----N
Grapes----18/12/12----Y

我想删除标记为“Y”的 2 行。

我想在 c# 代码中使用 Linq 来实现这一点。最初,我正在使用连接字符串建立与数据库的连接。我将获得设备上下文 DC,然后我将复制所有行。

现在我将枚举标记为N 的行并调用remove。

一旦我删除,我会这样做:dc.deleteonSubmit<tableName>(var).

在此之后,我应该调用dc.submittsavechages(); 或使 DB 看起来像什么:

Mango----21/12/12----Y
Grapes----18/12/12----Y

如果我在 sql 查询分析器中查询,我应该得到以上结果。如何在 LINQ 中做到这一点?

【问题讨论】:

  • Linq to SQL 还是 Linq to Entities?它们是不同的。

标签: sql sql-server linq linq-to-entities


【解决方案1】:

试试这个:

Dim dc as new DataClassesDataContext()

Dim deleteFruits = _
    From f In db.Fruits() _
    Where f.Remove _
    Select f

For Each fruit In deleteFruits
    db.Fruits.DeleteOnSubmit(fruit)
Next

Try
    db.SubmitChanges()
Catch ex As Exception
    Console.WriteLine(ex)
    ' Provide for exceptions
End Try

【讨论】:

  • 一旦我们调用 DeleteOnsubmit 并提交 SubmitChanges,它会正常工作吗?...所以它会删除实际 SQL DB 中存在的行对吗?
  • 可以,前提是您已正确设置 LINQ to SQL 数据上下文。
【解决方案2】:

可以做得更紧凑

db.Fruits.DeleteAllOnSubmit(db.Fruites.Where(f=>f.remove == "Y" )) 

try/db.SubmitChanges() 部分保持不变。

【讨论】:

  • 我是 sql 新手,我有一个疑问。您的语句 db.Fruites.Where(f=>f.remove) 如何列出所有标记为“Y”的行跨度>
  • 谢谢,但我还有一个问题...如果成员是实体引用,那么如何删除?...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
相关资源
最近更新 更多