2011-01-10 34 views
3
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Data; 

這就是我的命名空間。我正在尋找System.Data.Linq;但它似乎並沒有在任何地方,我想這是什麼被轉移到System.Linq,因爲我可以訪問Linq中的大多數其他東西。我發現System.Data:Linq,但沒有區別。DeleteOnSubmit不存在?

這裏是我的方法:

public void deleteStudienummer(int studienummer) 
{ 
    dbcontent = new DBEntities(); 

    var dQry = from members in dbcontent.Medlemmer 
       where members.Studienummer == studienummer 
       select members; 

    foreach (var member in dQry) 
    { 
     dbcontent.*** 
    } 
    dbcontent.AcceptAllChanges(); 
    Console.WriteLine("delete member should have occured"); 
} 

***應該是DeleteOnSubmit,但我只有DeleteDatabaseDeleteObject,我嘗試了後者,但它不工作。

也試過dbcontent.Medlemmer.*但仍然不存在。

AcceptAllChanges()應該是.submitChanges(),但那也不存在。

+0

相信using語句命名空間僅需要System.Linq的。但是您需要確保在項目級別引用System.Data.Linq程序集。 – 2011-01-10 19:40:01

回答

4

據我所知DeleteOnSubmit只能從「表」不是從一個DataContext調用。看起來你正試圖從上下文中調用DeleteOnSubmit

dbcontent.Medlemmer.DeleteOnSubmit(member);

當使用LINQ實體如在這種情況下dbContent.DeleteObject(member)可以被用於標記爲刪除。之後,需要調用dbContent.SaveChanges()來應用更改。 (AcceptAllChanges()不會做刪除)。

1

你不要在你的DataContextDeleteOnSubmit - 你怎麼稱呼它上ITableTable<TEntity>。例如:

dbcontent.Medlemmer.DeleteOnSubmit(member); 

DataContext.SubmitChanges應該存在,但...

的命名空間沒有改變,所以我不知道爲什麼System.Data.Linq沒有顯示出來給你。你有沒有參考System.Data.Linq.dll?如果你沒有這個參考,我的代碼就會被編譯出來,因爲你的DBEntities這個類應該是必需的。

+0

也不在那裏。 :-( – 2011-01-10 19:39:21

+0

@Anders:看到我的最後一段 - 你需要一個對System.Data.Linq的引用 – 2011-01-10 19:40:24

1

您需要添加一個引用System.Data.Linq程序 Picture

+0

已更新,已經這樣做,沒有任何區別。: -/ – 2011-01-10 19:40:28

1

你可以嘗試以下方法:

foreach (var member in dQry) 
    { 
     dbcontent.Medlemmer.DeleteOnSubmit(member); 
    } 
1

我是有這個問題,以及,不得不添加引用到System.Data.Linq

然而,以及添加參考System.Data.Linq,也刪除以下using statments:

//using System.Linq; 
//using System.Linq.Expressions;