JayData inverseProperty

时间:2013-10-10 22:01:22

标签: javascript angularjs odata jaydata

我的JayData实体上有inverseProperty:

'User': { 'type': 'RavenDBMembership.User', 'inverseProperty': '$$unbound' },

我真的希望能够使用它,但现在不用如何......

据我所知,'$$ unbound'值应该使用 include 函数加载该属性,然后我应该可以像这样使用它:

entity.User

但相反,它甚至没有将“用户”添加到结构中。当我使用AngularJS打印实体时:

{{entity}}

我使用值获取实体的结构,但是User属性不存在!

那么..任何样本或想法如何在JayData中使用'inverseProperty':'$$ unbound'?

2 个答案:

答案 0 :(得分:2)

所以我想出了问题所在。 当实体模型说

'inverseProperty': '$$unbound'

为了达到这些属性,我们必须说(在我的情况下是用户)

context.EntitySet.include('User').toArray(handler);

所以这里的magic关键字是 include('Property_name')

然后我们就可以到达 entity.User 了。

我的错误是自动认为JayData 包含

答案 1 :(得分:1)

对不起回答,但我无法评论......

您确定您的元数据实际公开了所有实体吗?

前几天我在GitHub

上偶然发现了这一点 只是一个想法...

编辑:

其实我很好奇所以我去看了消息来源。在this file (line 364)中它说:

 if (memDef.inverseProperty === '$$unbound') {
    //member definition is navigation but not back reference

似乎您的导航属性未设置为引用其父级。

请考虑以下事项:

 $data.Entity.extend('Entities.User', {
   'IdPerson': { 'key': true, 'type': 'Edm.Guid', 'nullable': false, 'computed': true },
   'Login': { 'type': 'Edm.String', 'nullable': false, 'required': true, 'maxLength': 20 },
   'Password': { 'type': 'Edm.String', 'nullable': false, 'required': true, 'maxLength': 36 },              
   'Role': { 'type': 'Entities.Role', 'inverseProperty': 'User' }
        }); 

 $data.Entity.extend('Entities.Role', {
   'IdRole': { 'key': true, 'type': 'Edm.Guid', 'nullable': false, 'computed': true },
   'User': { 'type': 'Array', 'elementType': 'Entities.User', 'inverseProperty': 'Role' }
    });

这实际上是我的一个工作模型的一部分,我尝试将'$$ unbound'放在反转属性中,然后再现你的错误。

您应确保您的基础数据模型配置了正确的外键和多重性。这实际上是'inverseProperty'用于什么。