C# 通过WCF使用FK rlsp删除2个表

C# 通过WCF使用FK rlsp删除2个表,c#,sql,.net,wcf,C#,Sql,.net,Wcf,我有两张桌子,预订详情和可用性。 VenueID是VenueAvailability中的PK,用于预订详细信息 在我的aspx用户界面中,它将调用WCF服务来执行删除。单击按钮时,我想从BookingDetails中删除VenueID,并删除VenueAvailability中的整行 我得到 Incorrect syntax near the keyword 'FOREIGN' 有人能帮我吗 //在我的WCF中 SqlCommand cmd = new SqlCommand("ALTER Ta

我有两张桌子,预订详情和可用性。 VenueID是VenueAvailability中的PK,用于预订详细信息

在我的aspx用户界面中,它将调用WCF服务来执行删除。单击按钮时,我想从BookingDetails中删除VenueID,并删除VenueAvailability中的整行

我得到

Incorrect syntax near the keyword 'FOREIGN'
有人能帮我吗

//在我的WCF中

SqlCommand cmd = new SqlCommand("ALTER Table BookingDetails DROP 
Constraint FK_BookingDetails_VenueAvailability FOREIGN KEY(VenueID) 
REFERENCES VenueAvailability(VenueID) ON DELETE SET NULL 
WHERE BookingID=@BookingID", con);        
cmd.Parameters.AddWithValue("@BookingID", venueInfo.BookingID);
在aspx.cs中

DeleteVenueAvailability venueInfo = new DeleteVenueAvailability();

venueInfo.BookingID = lblBookingID.Text;

我不明白你说“通过WCF”想要达到什么目的。我的建议是,在Sql端执行所有操作,并从前端将该查询称为SP。简单

我从问题中观察到的是,您希望清理VenueAvasibility并更改BookingDetails

因此,我的建议如下:

  • 建立您的查询,以便在创建临时表或备份其他位置后,它将删除预订可用性中的所有行

  • 更改表格预订可用性并删除id列

  • 现在在VenueAvability上运行Truncate查询是安全的,因为所有引用都已从引用表中删除


  • 当删除VenueAvailabilities中的相应行时,您确实具有将NULL设置为BookingDetails.VenueId的外键

    那么为什么不这样做呢:

    DELETE FROM VenueAvailabilities WHERE VenueId = @VenueId;
    

    您只需要从某个地方获取VenueId。

    为什么需要一个“ALTER TABLE”来进行简单的数据操作?将VenueId更新为null(因为它是一个foreignkey列(假设您允许null)),然后从venueavailability中删除该行。所有这些内容都需要删除吗?这里有点不对劲!我很抱歉,因为我不熟悉编码@谢恩,谢谢!我想我明白了it@user3111115:您的约束看起来没有问题,因此只需尝试删除VenueAvailabilities中的行,看看效果如何。他希望根据给定的BookingId删除VenueAvailabilities中的特定行,并删除BookingDetails中的外键。我猜他不想删除VenueAvailability中的所有行。