gpt4 book ai didi

c# - 可空属性引发验证错误,而它不应该

转载 作者:太空宇宙 更新时间:2023-11-03 15:41:34 25 4
gpt4 key购买 nike

使用带有 Breeze 的 Entity Framework ,我有这个类 Taxi 和可为空的 int TravelID:

public class Taxi
{
// some primary key/Id stuff

// Then these:
public int? TravelID { get; set; }
public virtual Travel Travel { get; set; }
}

(当然是简化的)映射看起来像这样:

public TaxiMap()
{
this.Property(t => t.TravelID).IsOptional();
}

我的数据库工具(HeidiSQL)显示该属性可以为空,默认也是NULL。但是,当我尝试保存 Taxi 实体时,出现此验证错误:

errorMessage: "'TravelID' is required"

TravelID 之前是必需的,但我将其更改为这样。当 TravelID 为空时会发生此错误。当它为 0 时,我收到 FK 约束错误。

所以现在我的问题是,我是否忘记了什么/做错了什么来使可为空的工作正常?

1 小时后添加:我现在找到了一个解决方法,但它真的很脏,我真的不想使用它。在前端,我将 TravelID 设置为“0”以通过验证,然后在我的 Controller 中,我在保存之前将 Taxi 的 TravelID 设置为 NULL。

最佳答案

TravelID 不是 Taxi 类的实际 ID,它是 Travel 类的外键。您尝试在此处工作的映射应该在 TravelMapper 中,因为它属于那里。

如果进入下一步,则可以省略所有这些并在模型上使用属性,例如 ID 属性上方的自动生成属性:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }

通过这种方式,您可以确保 Travel 类必须有一个 ID,但在 Taxi 类中,您没有义务指定 Travel 类型的对象。

关于c# - 可空属性引发验证错误,而它不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30116692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com