cho*_*bo2 13 asp.net asp.net-mvc linq-to-sql
我是linq to sql的新手,我不知道如何删除记录.
所以我一直在看这个教程
http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx
所以对于Update,他们有
NorthwindDataContext db = new NorthwindDataContext();
Product product = db.Products.Single(p => p.ProductName == "Toy 1");
product.UnitPrice == 99;
product.UnitsInStock = 5;
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
对于删除,他们有
NorthwindDataContext db = new NorthwindDataContext();
var toyProducts = from p in db.Producsts
where p.ProductName.Contains("Toy")
select p;
db.Products.RemoveAll(toyProducts);
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
所以我每次都要查询,获取记录以删除该记录?就像我可以看到这样做更新,因为你需要给它一个记录,首先更新,然后进行更改,所以我理解查询部分,但没有删除.
就像你不能只是发送你想要删除的东西,它去删除它?为什么你必须首先得到它,然后告诉它被删除?
这不是数据库中的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);
}
Run Code Online (Sandbox Code Playgroud)
因此,如果失败,则会显示"无法删除未附加的实体"消息.
所以我可以看到为什么前两行在delete方法中会失败,因为我创建了一个新对象,它们在具有TableB和TableC的任何信息的对象中都没有.
然而,我无法理解为什么最后一行仍然失败,即使其他2行不在那里.
就像我认为它会起作用一样,我将传入我的表A类对象并查看表中包含的信息.但事实并非如此.
那么我首先必须取出信息,然后进行查询以获取它然后将其删除,就像在示例中一样?
还有什么区别在removeAll()和DeleteAllOnSubmit()之间.
就像我说我是linq to sql的新手,由于时间限制而无法坐下来读书.一旦我有更多时间,我可能会读完一本书.
谢谢
Jam*_*ack 13
在你的一个问题中你有几个问题,但如果你已经拥有主键,我将从最简单的,关于附加开始.如果你没有主键,那么我总是只进行一次获取然后删除,但是,每当我进行提取时,我倾向于存储主键以进行更新和删除.
它将删除主键,但如果你有,那么只需按照我的方式附加并调用delete.我不会传递DLINQ所需的对象,因为我希望能够在需要时更改它,因此我传入一个不同的User对象,只需从业务类中提取PK并将其放入DAO类.
var db = new MeatRequestDataContext();
if (input.UserID > 0)
{
entity = new User()
{
UserID = input.UserID
};
db.Users.Attach(entity);
db.Users.DeleteOnSubmit(entity);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这是一种通过 linq 查询从表中删除行的简单方法。可能会有所帮助。
var summary_delete = database.summeries.Find(id);
var delete = database.summeries.Remove(summary_delete);
database.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
参考:http : //mvc4asp.blogspot.in/2013/09/how-to-delete-table-row-in-sql-database.html
小智 5
Inserted_LINQDataContext db = new Inserted_LINQDataContext();
Item itm = new Item();
int ID = Convert.ToInt32(TextBox1.Text);
var DeleteID = from d in db.Items
where d.id == ID
select d;
db.Items.DeleteAllOnSubmit(DeleteID);
db.SubmitChanges();
Label2.Text = "Record deleted Successfully.";
TextBox1.Text = "";
Run Code Online (Sandbox Code Playgroud)
其中Item是表名,Linserted_LINQDataContext是您的Linq DB名称,id是Item表中的列名.Items是linq中Item表的别名.
| 归档时间: |
|
| 查看次数: |
34482 次 |
| 最近记录: |