每次我认为我已经把它钉牢了,它就会再次抬起头来!
所以简单地说,如果有一个带有导航属性的主表,我使用“createEntity”创建实体的新空版本,我可以在返回的实体中看到导航属性,但我无法访问/设置任何属性。我怀疑这是因为子实体中尚不存在父键?
澄清。我可以在返回新实体的点放置一个断点,如果我检查 master() 实体,我可以在那里看到 children 属性。如果我然后尝试做:
master().children.childProperty("this is a new value")
...然后我只是得到“object function observable() ...”(然后我认为是来自淘汰赛的大量代码)并结束“没有方法'childProperty'”
我想我已经尝试了人类已知的每一种括号组合,但我得到的错误略有不同,但没有任何效果。我是否需要在某处有一个 [0],因为“孩子”实际上是一个数组?
添加了澄清信息。
正如下面的评论中详述的那样,检索具有在预加载查询中指定的“扩展”的现有实体会返回一个具有相关子实体的主实体,我可以使用我为“新”示例尝试的方法设置其属性以上不起作用。当我返回一个现有的主/子时,“子”集合的指定长度为 1,当我初始化一个新的主/子时,数组长度为零。
我想,这不是传统的主/子关系——它更像是一个关联实体,而不是一个子实体。解释一下,“主人”总是有一个子记录——把它想象成主人是一个瓶子,子是决定瓶子颜色、内容和瓶子上标签细节的相关记录。永远只有一瓶,但颜色、内容和标签可能有几十种变化。
当我检索现有的主记录时,我还指定了我想要的特定子记录,因此在此页面中我只会检索一个主记录和一个子记录,因为我正在编辑特定变体并且可能想要更改标签文本。
在另一页中,我列出了一个瓶子的所有变体,因此我在经典的“一对多”示例中检索了一个主人和所有相关的孩子。
型号为:
Public Class bMaster
Public Property ID() As Integer
...other properties
Public Overridable Property bChildren() As ICollection(Of bChild)
End Class
Public Class bChild
Public Property ID() As Integer
Public Property bMasterID() As Integer
...other properties
Public Overridable Property bMaster() As bMaster
End Class