2013-10-10 3 views
2

У меня есть inverseProperty на моем JayData лица:JayData inverseProperty

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

Я бы очень хотел, чтобы иметь возможность использовать его, но не теперь, как ..

Насколько я понимаю, «$$ несвязанных» значение должно загрузить свойство с включают функцию, а затем я должен быть в состоянии использовать это просто, как это:

entity.User 

Но вместо этого, он делает даже не добавляйте «Пользователь» в структуру. Когда я печатаю объект с AngularJS, как это:

{{entity}} 

Я получаю структуру объекта со значениями, но свойство Пользователь не существует!

Итак. Любые образцы или идеи, как использовать «inverseProperty»: «$$ unbound» в JayData?

ответ

2

Итак, я понял, в чем проблема. Когда модель субъект говорит

'inverseProperty': '$$unbound' 

Для того, чтобы достичь этих свойств, мы должны сказать (Пользователь в моем случае)

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

Так магия Ключевое слово здесь включают («property_name»)

Тогда мы можем достичь entity.User thingy.

Моей ошибкой было считать, что JayData включает автоматически.

1

Извините за ответ, но я не могу комментировать ...

Вы уверены, что ваши метаданные фактически обнажает все объекты?

я наткнулся accross этого на другой день на GitHub

просто мысль ...

EDIT:

На самом деле мне было интересно, поэтому я пошел, чтобы видеть источники. в 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' } 
    }); 

это на самом деле часть одной из моих рабочих моделей, я пытался ставить «$$ несвязанных» в обратной собственности и воспроизводить вашу ошибку.

Вы должны убедиться, что ваша базовая модель данных имеет соответствующие внешние ключи и множественность. это то, для чего используется «inverseProperty».

+1

Да, это произошло раньше, когда метаданные были неправильными –

Смежные вопросы