【发布时间】:2015-05-08 15:58:00
【问题描述】:
将实体框架与 Breeze 结合使用,我有此类 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。但是当我尝试保存出租车实体时,我收到了这个验证错误:
errorMessage: "'TravelID' is required"
以前需要 TravelID,但我这样更改了它。 TravelID 为空时会发生此错误。当它为 0 时,我得到一个 FK 约束错误。
所以现在我的问题是,我是否忘记了任何事情/做错了什么来使可以为空的工作?
1 小时后添加:我现在找到了一种解决方法,但它真的很脏,我真的不想使用它。在前端,我将 TravelID 设置为“0”以通过验证,然后在我的控制器中,我在保存之前将 Taxi 的 TravelID 设置为 NULL。
【问题讨论】:
-
当您提到实体框架作为标签时,您是否在更改 TravelID 现在是可选而不是强制之后更新了模型?
-
你添加
TaxMap到EF配置对象了吗? -
Thomas 和 Jenish 都同意。
-
@Peter 您对问题的更新 我将出租车的 TravelID 设置为 NULL 没有任何意义,因为您在问题中提到了
This error occurs when the TravelID is null... -
@JenishRabadiya 问题是这确实有意义。当我尝试将实体保存在前端时 TravelID 为空时,我会收到上述验证错误。因此,为了通过验证,我在前端将其设置为 0,然后在后端将其更改为 null,否则后端会引发外键约束错误。 (但我完全理解你的困惑)
标签: c# entity-framework breeze