问卷分支逻辑开发报错:Question类DependentAnswer属性无法设为Null
解决DependentAnswer属性无法设为null的问题
嘿,这个报错其实很好搞定!核心原因是你定义的DependentAnswer是int类型——这是值类型,默认不能存储null值,但你的非依赖问题(比如不需要触发条件的问题16)在数据库里对应的DependentAnswer字段肯定是null,当EF从数据库读取数据时,试图把null赋值给int类型的属性,就抛出这个错误了。
直接解决方案:把DependentAnswer改成可空整数类型
只需要把Question类里的DependentAnswer改成int?(也就是Nullable<int>的简写),这样它就能接受null值了。修改后的核心代码如下:
public class Question { [Key] public int id { get; set; } public string question { get; set; } // 改成可空int类型,允许存储null值 public int? DependentAnswer { get; set; } }
额外注意事项
- 数据库迁移(如果用EF Code First):
如果你用的是Entity Framework Code First,需要生成并执行一次迁移,把数据库中Questions表的DependentAnswer列修改为允许null。执行以下命令(Package Manager Console里):Add-Migration AllowNullDependentAnswer Update-Database - 业务逻辑适配:
在处理问题展示逻辑的时候,记得判断DependentAnswer是否为null:- 如果
DependentAnswer == null:说明这个问题不需要依赖任何上一题的答案,直接展示 - 如果
DependentAnswer有具体值:检查用户上一题选择的答案ID是否和这个值匹配,匹配才展示当前问题
- 如果
这样就能完美解决你遇到的空值赋值问题,同时适配你的分支问卷逻辑啦!
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

