"Not an association" 使用带有特殊 NHibernate 映射的 BreezeJS

"Not an association" using BreezeJS with special NHibernate mapping

我正在将 Breeze 与 Web API 和 NHibernate 结合使用。以下 NHibernate 映射类型(可能很少使用)导致 class NHMetadataBuilder 的方法 MakeAssociationProperty 中出现 Breeze 错误消息 "Not an association":

<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 映射一起使用?

异常 "Not an association" 可以通过在 BreezeContextProvider.NHNHMetadataBuilder.MakeAssociationProperty 方法中检查 collectionPersisterManyToMany 还是 OneToMany 来避免因为对于 属性 "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);
           }
       }
}