Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何删除另一个表中引用的行?_C#_Asp.net_Sql Server - Fatal编程技术网

C# 如何删除另一个表中引用的行?

C# 如何删除另一个表中引用的行?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,问题的标题似乎有点模糊。我将在这里解释 所以,我有两张桌子: 1) 事件 2) 接触 事件表具有从联系人表引用的外键(ContactID)。 因此,当我删除联系人时,我必须首先删除使用被删除联系人ID的事件行,以避免任何冲突 但我不想那样。实际上,我使用ContactID获取ContactName和ContactNumber,同时在gridview中显示事件详细信息以及事件表中的其他列 这就是我不希望删除事件的原因,我只希望ContactName和ContactNumber的值为空 我已尝试在事

问题的标题似乎有点模糊。我将在这里解释

所以,我有两张桌子: 1) 事件 2) 接触

事件表具有从联系人表引用的外键(ContactID)。 因此,当我删除联系人时,我必须首先删除使用被删除联系人ID的事件行,以避免任何冲突

但我不想那样。实际上,我使用ContactID获取ContactName和ContactNumber,同时在gridview中显示事件详细信息以及事件表中的其他列

这就是我不希望删除事件的原因,我只希望ContactName和ContactNumber的值为空

我已尝试在事件表中将ContactID设置为NULL。代码:

string query0 = "Update Event SET ContactID=@contact where ContactID='" + cntID + "'";
SqlCommand cmd0 = new SqlCommand(query0, conn);
cmd0.Parameters.AddWithValue("contact", DBNull.Value);
conn.Open();
cmd0.ExecuteNonQuery();
conn.Close();
这会将事件表中的ContactID设置为NULL,这很好。但是,当我试图在gridview中获取事件信息并在两个表上应用联接时,我无法获取将ContactId设置为NULL的事件记录。 这是获取事件信息的查询:

SELECT Event.ID, Event.StartDate, Event.Title, Contact.Name, Contact.Cell, Event.EventType, Event.Confirmed, Event.Comments 
FROM Event 
INNER JOIN Contact ON Event.ContactID = Contact.ID

解决这个问题的方法是什么?请帮助我并指导我正确的方向。

最终查询的问题是您使用的是
内部联接
,它将只返回两个表中存在的结果。如果您有没有相关联系人的事件,请将其更改为左连接

SELECT e.ID, e.StartDate, e.Title, c.Name, c.Cell, e.EventType, e.Confirmed, e.Comments 
FROM Event e
LEFT JOIN Contact c ON e.ContactID = c.ID

我还更新了查询以使用表别名。

此查询在SQL Server Management Studio上运行良好,但结果未反映在web界面中。它仍然不显示ContactID为NULL的行。我做错了什么?恐怕我不确定。可能值得作为一个单独的问题发布。