C# 如何处理.NET中可选字段的外键

C# 如何处理.NET中可选字段的外键,c#,asp.net,sql-server,database,foreign-keys,C#,Asp.net,Sql Server,Database,Foreign Keys,处理以下情况的最佳方法是什么? 下拉列表(主表)在特定表单中是可选的。但是,在数据库表中,字段受外键约束。若用户并没有从下拉列表中选择,那个么它会因为外键而产生问题 一种解决方案是在主表中创建默认选项,并在选择为空时使用它。但在下拉列表中,我们需要处理这个以显示在顶部。 这是完美的解决方案吗? 有没有其他优化的解决方案 谢谢如果数据库中需要它,那么它在前端不应该是可选的。要么更改数据库,要么更改前端。仅外键约束不应强制执行此操作,您可能希望使字段为空。因此您的下拉列表实际上不是可选的。您的解决方

处理以下情况的最佳方法是什么?

下拉列表(主表)在特定表单中是可选的。但是,在数据库表中,字段受外键约束。若用户并没有从下拉列表中选择,那个么它会因为外键而产生问题

一种解决方案是在主表中创建默认选项,并在选择为空时使用它。但在下拉列表中,我们需要处理这个以显示在顶部。 这是完美的解决方案吗? 有没有其他优化的解决方案


谢谢

如果数据库中需要它,那么它在前端不应该是可选的。要么更改数据库,要么更改前端。仅外键约束不应强制执行此操作,您可能希望使字段为空。

因此您的下拉列表实际上不是可选的。您的解决方案似乎还可以,只需让下拉列表显示默认选择。我们可以在外键约束中插入null吗?null插入是否适合DB?这取决于您的数据结构-在这种情况下,null将表示此项未与FK链接。有些人不喜欢null,但这真的取决于你。如果你真的可以拥有一个未链接的项目,null是迄今为止存储该项目未链接事实的最佳选择,而不是任何标记值。这就是数据库在返回左连接时所做的,因此它很好且一致,并且当您需要在应用程序中对其作出反应时,数据库可以轻松地感知和处理诸如COALESCE之类的功能。