2016-05-11 5 views
0

データベースからレコードを削除することに問題があります。私はIdを使って削除したいが、他のテーブルは外部キーとして存在している。だからこそ私は拡張子で削除する必要があります。
Conferences、Conferences_Rewivers、Topicsの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

は、任意のヘルプのソリューションです(会議つまり、プライマリキーテーブル)メインテーブルを削除することができ、その後外部キー表(Conferences_Rewivers、トピック)を削除します。 http://stackoverflow.com/a/7895411/728795? – Andrei

答えて

関連する問題