【问题标题】:Entity Framework setting navigation property null in zero to one association实体框架在零对一关联中设置导航属性 null
【发布时间】:2013-07-28 12:25:34
【问题描述】:

我有两个表之间的零对一关联。 例如,我有实体 Car 和实体 License,而汽车可以有 0 个或 1 个许可证。
(一辆车可以有一个牌照,但一个牌照可以有0或1辆车) 当我尝试删除汽车牌照时,通过设置 Car.License = null 我得到一个例外,例如:

“Car_Licence”关联集中的关系处于“已删除”状态。给定多重约束,相应的“许可证”也必须处于“已删除”状态。

我希望许可证保留在主许可证 DbSet 中,并且我希望保留对 Car 的引用,我希望将 Car 的许可证设置为 null。

我错过了什么?

【问题讨论】:

  • 您能告诉我们您的映射/删除代码吗?

标签: c# entity-framework c#-4.0


【解决方案1】:

Car.License 设置为null 与您设置的关联冲突,其中汽车必须设置一个许可证。您需要更改您的关联,以便汽车可以拥有一个或零个许可证才能运行。

编辑

如果要将属性设为空,则必须将关联的两端设置为零或一。

【讨论】:

  • 关联是Car可以有0个或1个license,License需要有1个Car。那是我不明白的。
  • 在这种情况下,请尝试将许可证对象上的汽车属性设置为空。
  • 你不懂。我无法将 License.Car 设置为 null,因为它有一个约束!我希望这样,我想要的只是将 Car.License 设置为 null 并且它应该可以工作,因为它是(零或一)但它给了我错误消息,就像我正在删除某些东西一样。
  • 是的,如果您想将 Car's License 属性设置为 null,您必须将关联的两端都设置为 0..1
  • 我认为这行不通。该问题要求license.Car.License == null 为真的情况。这对于单一的关联是不可能的。我认为这是无法解决的,除非您创建两个单独的关联,以便每个许可证有一辆汽车,每辆汽车都有一个许可证集合,并且每辆汽车分别有零个或一个有效许可证。
猜你喜欢
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
相关资源
最近更新 更多