微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

所以我一直在看这个教程

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);
 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐