所以我一直在看这个教程
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 举报,一经查实,本站将立刻删除。