2011-01-10 78 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;