外键对象引用的模型验证问题

Model validation issues on foreign key object references

我开始检查 asp.net 6 / mvc / entity framework 应用程序,但 运行 只是一个基本的测试应用程序就遇到了麻烦。我的外键对象(不是 ID 本身)在创建脚手架控制器时使我的 ModelState.Isvalid 为假。

为简单起见,更改了一些字段名称,但基本上就是这样,在模型中添加了一些额外的字符串 - 想象一个具有所需部门的用户:

[Column("deptId")]
public int DeptId { get; set; } // <== ValidationState = Valid

[ForeignKey("DeptId")]
[InverseProperty("Users")]
public virtual Dept dept { get; set; } = null!; // <== ValidationState = InValid

模型是使用 Scaffold-DbContext 创建的。

我可以做一个“ModelState.Remove(“Dept”)”然后一切都通过了。

我可以在 asp.net 3.1 中完全重新创建并且没有问题。未检查虚拟 Dept 对象,但它在 asp.net 中 6. 现在这是预期的吗?有没有比在每次创建时为每个外键对象应用 ModelState.Remove 更好的方法?我是否遗漏了告诉该字段要验证的新内容?

尝试将 属性 设置如下:

public virtual Dept? dept { get; set; }

你也可以创建一个视图模型