【问题标题】:Mapping 1 to 0..1 in Fluent NHibernate在 Fluent NHibernate 中将 1 映射到 0..1
【发布时间】:2010-06-24 23:02:23
【问题描述】:

假设我有两个实体;

QuestionAnswer(Id, AnswerValue)
Note(Id, QuestionAnswer_Id, NoteValue)

如何在 Fluent Nhibernate 中映射它?我知道有一个 HasOne 映射,但这是一对一的映射,除非我弄错了?
我也可以将其映射为 1 到 M,但需要 List<Note> 作为我的 QuestionAnswer 实体上的导航属性,这对我来说 1 或 0 也没有多大意义。

谢谢,科汉

【问题讨论】:

    标签: nhibernate fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    我也为此苦苦挣扎。我最终做的是映射一个私有集合并使用公共属性来控制集合中元素的数量。基本上我把它当作一个 1..n 集合而不是一个 1..* 集合,其中 n = 1。

    【讨论】:

      【解决方案2】:

      使用一对一关联,如果Note不可用,则将Note设置为null

      另外,请参阅Hibernate one to zero or one mapping

      【讨论】:

      • 你是说我应该从 QuestionAnswer 到 Note 映射 1 到 many,从 Note 到 QuestionAnswer 映射到一对一。正如我所提到的,这将需要我的 QuestionAnswer 实体上的 List ,其中只有 1 或 0 个对象。对我来说似乎很奇怪;拥有一个永远不会超过 1 个项目的列表。
      • 为什么会这样?多对一和一对一(分别在 FNH 中的 References 和 HasOne)不使用集合。
      • 因为我说的是“OneToMany (HasMany)”,它确实使用了一个集合。抱歉,但我的理解似乎不正确。我可以想象它与 HasMany 一起使用,因为它可以与 0 或 1 一起使用(或更多,因为它是一个集合)。但是你说的是我实际上需要 References(x => x.Note).NotFound.Ignore();对于 QuestionAnswer 的映射和 HasOne(x => x.QuestionAnswer);用于我的笔记映射?
      • 一对一要求表具有相同的主键,不是吗?
      猜你喜欢
      • 1970-01-01
      • 2010-11-30
      • 2011-10-21
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多