通过WCF删除带有FK rlsp的2个表

时间:2013-12-17 12:23:05

标签: c# sql .net wcf

我有两张桌子,BookingDetails& VenueAvaiability。 VenueID是VenueAvaillability中的PK,是BookingDetails的FK。

在我的ui for aspx中,它将调用WCF服务来执行删除。当我单击按钮时,我想从BookingDetails中删除VenueID并删除VenueAvaillability中的整行。

我得到了

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;

2 个答案:

答案 0 :(得分:0)

我不明白你想通过说“通过WCF”来实现什么。我的建议是在Sql端执行所有的东西,并从前端调用该查询作为SP。简单!!

我从问题中看到的是你想要清理VenueAvaiability并改变BookingDetails。

所以,这是我的建议:

  1. 构建您的查询,以便在制作临时表或备份其他地方后删除预订可用性中的所有行。

  2. 更改表格预订可用性和删除ID列。

  3. 现在可以安全地在VenueAvaiability上运行Truncate查询,因​​为所有引用都已从引用的表中删除..

答案 1 :(得分:0)

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

那么为什么不做这样的事情呢?

DELETE FROM VenueAvailabilities WHERE VenueId = @VenueId;

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