"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.NH
的 NHMetadataBuilder.MakeAssociationProperty
方法中检查 collectionPersister
是 ManyToMany
还是 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);
}
}
}
我正在将 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.NH
的 NHMetadataBuilder.MakeAssociationProperty
方法中检查 collectionPersister
是 ManyToMany
还是 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);
}
}
}