2012-10-19 51 views
0

我有一個數據庫,其表名爲Fruits。在表中,我有3列:Name,Date,Remove如何使用Linq寫入數據庫

現在我已插入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中做到這一點?

+0

Linq to SQL或Linq to Entities?他們是不同的。 – jrummell

+0

Linq to Entities – Naruto

回答

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 
+0

一旦我們調用DeleteOnsubmit並提交SubmitChanges,它將正常工作?...因此它會刪除實際SQL DB中存在的行是否正確? – Naruto

+0

是的,只要您已正確設置LINQ to SQL數據上下文。 –

+0

感謝它的工作:) – Naruto

1

這是可以做到更緊湊

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

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

+0

我是新來的SQL,我有一個疑問..你的聲明db.Fruites.Where(f => f.remove)如何列出所有行標記爲'Y' – Naruto

+0

我認爲這是一個布爾值。請參閱編輯 – Pleun

+0

謝謝,但我有一個更多的查詢...如果該成員是實體參考,那麼如何刪除?... – Naruto