&引用;不是一个协会”;使用具有特殊NHibernate映射的BreezeJS
我正在使用Breeze与Web API和NHibernate。以下NHibernate映射类型(可能很少使用)在类NHMetadataBuilder的方法MakeAssociationProperty中导致Breeze错误消息“Not a association”:&引用;不是一个协会”;使用具有特殊NHibernate映射的BreezeJS,nhibernate,breeze,Nhibernate,Breeze,我正在使用Breeze与Web API和NHibernate。以下NHibernate映射类型(可能很少使用)在类NHMetadataBuilder的方法MakeAssociationProperty中导致Breeze错误消息“Not a association”: <set name="Zugnummern" table="USER_ZUGNUMMER_T" lazy="true" cascade="save-update"> <key co
<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映射一起使用?例外情况“非关联”通过检查BreezeContextProvider.NH
的NHMetadataBuilder.MakeAssociationProperty
方法中的collectionPersister
是否为ManyToMany
或OneToMany
,可以防止出现这种情况,因为对于属性“Zugnumern”的上述样本集映射,这两个条件都是假的:
// 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);
}
}
}