2016-05-11 27 views
0

我有一个问题,从数据库中删除记录。我想删除使用Id,但它已经存在其他表作为外键。这就是为什么我需要用扩展名删除。
我需要删除会议,Conferences_Rewivers,主题3个表中的记录。
我这样的代码,但它会抛出错误,因为它不会从所有表中删除记录。我该如何解决它?Asp.net级联删除到Gridview_Rowdeleting事件

protected void GridView1_RowDeleting1(object sender, GridViewDeleteEventArgs e) 
    { 
SqlConnection cn = new SqlConnection("Data Source = ---\\SQLEXPRESS; Initial Catalog = --; Integrated Security = True"); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandText = "delete FROM Conferences where Id = @Id"; 
     cmd.Connection = cn; 
     cmd.Parameters.AddWithValue("@Id", GridView1.DataKeys[e.RowIndex].Value); 
     cn.Open(); 
     cmd.ExecuteNonQuery(); 
     cmd.CommandText = "delete from Conferences_Rewivers where fk_Conferences = @Id"; 
     cmd.ExecuteNonQuery(); 
     cmd.CommandText = "delete from Topics where fk_Conferences = @Id"; 
     cmd.ExecuteNonQuery(); 
     cn.Close(); 
     BindGridView(); 
    } 

BindGridView

if(Session["user"] != null) 
     { 
      user = Session["user"] as User; 
     } 
     SqlCommand cmd = new SqlCommand("select Conferences.Id, Conferences.conferenceName, Conferences.conferenceDate , Conferences.conferencePlace, Conferences.submissionDueDate , Conferences.category, Conferences.status, Conferences.conferenceDescription from Conferences inner join Users on Conferences.fk_Users = Users.Id where Users.Id = @UserId", conn); 
     SqlParameter prm = cmd.Parameters.AddWithValue("@UserId", user.Id); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 

     DataTable dt = new DataTable(); 

     conn.Open(); 
     da.Fill(dt); 
     conn.Close(); 

     if(dt.Rows.Count > 0) 
     { 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
    } 
+1

是任何帮助,解决办法: http://stackoverflow.com/a/7895411/728795? – Andrei

回答

0

首先删除外键的表(Conferences_Rewivers,主题)后,你可以删除主表(主键表即公会)