2017-02-17 88 views
0

Я использую Breeze с веб-API и NHibernate. Следующий NHibernate типа отображения (который, вероятно, редко) приводит к сообщению об ошибке Бриза «не ассоциация» в методе MakeAssociationProperty класса NHMetadataBuilder:«Не объединение» с использованием BreezeJS со специальным отображением NHibernate

<set name="Zugnummern" 
    table="USER_ZUGNUMMER_T" 
    lazy="true" 
    cascade="save-update"> 
    <key column="USER_ID" /> 
    <element column="TRAIN_NO" 
     type="string" 
     length="6" 
     not-null="true" 
     unique="false" /> 
</set> 

Как я могу использовать Breeze с этим специальным отображением NHibernate?

ответ

0

Исключение «Не объединение» можно было бы предотвратить путем проверки collectionPersister либо ManyToMany или OneToMany в BreezeContextProvider.NH «ы NHMetadataBuilder.MakeAssociationProperty метода, поскольку оба условия будут ложно для приведенного выше установленного образца отображения для собственности„Zugnummern“:

// inverse foreign key 
var collectionPersister = joinable as AbstractCollectionPersister; 
if (collectionPersister != null) 
{ 
     if (collectionPersister.IsManyToMany || collectionPersister.IsOneToMany) 
     { 
      // many-to-many relationships do not have a direct connection on the client or in metadata 
      var elementPersister = collectionPersister.ElementPersister as AbstractEntityPersister; 
      if (elementPersister != null) 
      { 
       fkNames = GetPropertyNamesForColumns(elementPersister, columnNames); 
       if (fkNames != null) 
        nmap.Add("invForeignKeyNamesOnServer", fkNames); 
      } 
     } 
}