Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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#_Sql Server_Winforms - Fatal编程技术网

C# 删除外键时显示视图出现问题?

C# 删除外键时显示视图出现问题?,c#,sql-server,winforms,C#,Sql Server,Winforms,我有一个学生表和一个教育表,教育表的PK作为学生表的外键。但是,删除教育后,学生将不再显示在视图中。如何解决这个问题?根据您的要求,我认为您应该首先重新考虑您的数据库结构 回答以下问题: 让一名学生接受不存在的教育有意义吗 如果您删除了教育表中的教育,但具有该教育行的FK的学生仍保留在数据库中,则会出现这种情况。这似乎是您所要求的,但它没有多大意义,因为它不能保证数据的完整性 如果学生参加了上述教育,是否允许您删除教育 如果不允许这样做,那么您只需在1对多关系中禁用级联删除,您的问题就会得到解决

我有一个学生表和一个教育表,教育表的PK作为学生表的外键。但是,删除教育后,学生将不再显示在视图中。如何解决这个问题?

根据您的要求,我认为您应该首先重新考虑您的数据库结构

回答以下问题:

  • 让一名学生接受不存在的教育有意义吗

    如果您删除了
    教育
    表中的
    教育
    ,但具有该
    教育
    行的FK的学生仍保留在数据库中,则会出现这种情况。这似乎是您所要求的,但它没有多大意义,因为它不能保证数据的完整性

  • 如果学生参加了上述
    教育
    ,是否允许您删除
    教育

    如果不允许这样做,那么您只需在1对多关系中禁用级联删除,您的问题就会得到解决

  • 如果删除了
    教育
    ,是否所有分配到该教育的学生都应保留在数据库中

    这是您想要的,但由于数据库的结构,实现起来并不简单

  • 更简单的解决方案

    一种是创建3个表,而不是2个表:

  • 教育
  • 学生
  • 学生诱惑作业
  • 在1中,您存储所有与您的
    教育
    实体相关的内容。在2中,仅说明与您的
    学生
    实体有关的内容(请注意,他们选择的
    教育
    类型并不仅仅描述学生
    )。在3中,您存储分配给哪些教育的学生

    这样,如果您删除了
    教育
    ,分配给它的学生将不会被删除,只会删除将学生与特定
    教育
    联系起来的信息。这样可以更轻松地保持数据库完整性


    希望这能有所帮助。

    根据您提供的信息,我猜您已经在数据库上强制执行了引用完整性。这意味着,当您在education中删除一行时,与之链接的学生也被删除。

    我发现,由于其他字段依赖于数据,因此最好不要从表中删除数据。相反,您应该在表中有一个名为“IsDeleted”的布尔值,当您想“删除”它时,只需将其更改为True,并且在提取数据时,确保过滤掉任何将“IsDeleted”设置为“True”的内容。

    在视图中可能是外部联接而不是内部联接


    如果您向我们展示视图定义,我们可能会提供更多帮助,没有它,我们只是猜测。

    @user818566,您想要实现什么还不是很清楚。是否要阻止用户删除或阻止用户查看已删除的“教育”?因此。。。删除教育记录时,具有已删除记录的外键(?)的学生记录将不再显示?能否向我们展示表结构、视图定义和一些示例数据??事实上,我们最多只能猜测。。。。