数据库使用外键删除两个表之间的查询

时间:2011-12-27 18:15:44

标签: c# asp.net sql-server

我有一个配置文件(如下图所示)表每当我尝试从中删除一行时,我都会遇到此错误,表示Tempprice表中的外键中仍有数据与批量中的Id相关表。

问题是当它的Lots表变成Delete时,Tempprice中仍有一些行具有不同的Userid但是具有我想删除的Ownerid或Winnerid的相同lotid。

而且我不知道如何删除这些行!?或者需要哪个查询?

数据库关系和表格 Database Relationships

代码

while (checkbox.Checked)
{
    // Retreive the  ID
    int ida = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Value);

    // Pass the  value of the selected Id(s) to the Delete //command.

    //These numbers indicate in which order tables shoulde be deleted  
    /*1*/
    new BLL.LoginBLL().Delete(ida);
    /*2*/
    new BLL.MessageBLL().Delete(ida);
    /*3*/
    new BLL.JointBLL().Delete(ida);                    
    /*4*/
    new BLL.TemppriceBLL().Delete(ida);                             
    /*5*/
    new BLL.LotsBLL().Delete(ida);    
    /*6*/      
    new BLL.AuctionBLL().Delete(ida);
    /*7*/
    new BLL.ProfileBLL().DeleteProfile(ida);

    checkbox.Checked = false;
}

ShowUsers();

1 个答案:

答案 0 :(得分:0)

要删除引用,您需要将关系(通过选择连接两个对象的行)设置为Cascade的End 1 On Delete属性。 然后,您需要Load引用的对象或集合。在这种情况下调用Delete将删除您的对象及其引用的所有对象。