在我的数据库中,我有一个父表和一个子表,外键指向父表..在某些时候我必须清除两个表中的所有行。
我在Entity Framework中使用了以下代码:
foreach (ExcelRangeBase cell in ws2.Cells[2, 2, ToRow, 2])
{
string new_cell;
if (cell.Value == null)
{
continue;
}
else
{
new_cell = cell.Value.ToString();
string link = string.Empty;
string hyperlink = string.Empty;
string[] ints = new_cell.Split(',');
cell.Clear();
for (int i = 0; i < ints.Length; i++)
{
string s = ints[i];
link = @"myapplication/viewCar/ID=" + s;
cell.Hyperlink = new ExcelHyperLink(link) { Display = s };
}
}
}
由于外键,我在第二个截断时遇到异常,尽管我先清除子表。
我该怎么办?有没有其他方法可以删除两个表的所有行?
我不知道所有行上的foreach循环是否切实可行。
答案 0 :(得分:0)
这是SQL服务器的错!
您有两种方法可以实现目标:
删除外键,然后截断表格,然后重新创建外键(我不要推荐此解决方案,因为它太多了,通常不会值得的)
而不是-WhatIf
使用Truncate
(我通常使用此方法)
您的代码如下所示:
Delete
由于两个delete语句没有条件(没有using (MuseumDBEntities db = new MuseumDBEntities())
{
db.Database.ExecuteSqlCommand("Delete from childTable");
db.Database.ExecuteSqlCommand("Delete from parentTable");
}
子句),因此将从表中删除所有行。