asp.net – 如何删除linq到sql?

我非常新的 linq到sql,我不知道如何实际删除一个记录.

所以我一直在看这个教程

http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

所以对于更新他们有

NorthwindDataContext db = new NorthwindDataContext();

Product product = db.Products.Single(p => p.ProductName == "Toy 1");

product.UnitPrice == 99;
product.UnitsInStock = 5;

db.SubmitChanges();

删除他们有

NorthwindDataContext db = new NorthwindDataContext();

var toyProducts = from p in db.Producsts
              where p.ProductName.Contains("Toy")
                  select p;

db.Products.RemoveAll(toyProducts);

db.SubmitChanges();

所以我每次都要查询,以获取记录,以便删除该记录?像我可以看到这样做与更新,因为你需要给它一个记录先更新,然后进行更改,所以我了解查询部分,但不是删除.

喜欢你不能发送你想要删除的东西,它会删除它吗?你为什么要先得到它,然后告诉它被删除?

数据库上没有2个命中?

还有我正在努力工作的外交关系.所以我有这个

public ViewResult(string param1,string param2)
{
   Table A = new Table A
   A.Field1 = param1;
   A.Field2 = param2;

   Delete(A);
}

private void Delete(Table A)
{
   DbContext.A.DeleteAllOnsubmit(A.TableB);
   DbContext.A.DeleteAllOnSubmit(A.TableC);
   DbContext.A.DeleteOnSubmit(A);

}

所以这个失败就出现了这样的消息:“无法删除未附加的实体”.

所以我可以看到为什么前两行在delete方法中失败,因为我创建了一个新对象,而且它们在对象中没有任何有关TableB和TableC的信息.

然而,我看不出为什么最后一行仍然失败,即使不在那里的另外两条线.

就像我以为它会工作的一样,它将需要我的Table A类对象,我传入并查看表中包含的信息.这似乎并非如此.

那么我首先要把信息拿出来,然后做一个查询来得到它,然后删除它,就像在例子中一样?

removeAll()和DeleteAllOnSubmit()之间的区别也是如此.

就像我说的,我是linq到sql的新手,由于时间限制,还没有能够坐下来读一本书.一旦我有更多的时间,我将会阅读一本书.

谢谢

解决方法

您有一个问题有几个问题,但是如果您已经拥有主键,我将从最简单的关于附件开始.如果你没有主键,那么我一直只是做一个提取,然后删除,但是,每当我做一个提取,我倾向于存储更新和删除的主键.

它将删除主键,但是如果你有这样的话,那么只需像下面的那样添加,然后调用delete.我不会传递DLINQ所需的对象,因为我想要更改它,如果我想要的,所以我传递一个不同的用户对象,只是从业务类拉扯PK并将其放入DAO类.

var db = new MeatRequestDataContext();            
if (input.UserID > 0)
{
     entity = new User()
     {
         UserID = input.UserID
     };
     db.Users.Attach(entity);
     db.Users.DeleteOnSubmit(entity);
 }

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...