以下多对一映射工作(从NorthBreeze拍摄):微风+ NHibernate的许多一对一的关系,避免指定关系键
public partial class UserRole
{
public virtual long ID { get; set; }
public virtual long UserId { get; set; }
public virtual long RoleId { get; set; }
public virtual User User { get; set; }
public virtual Role Role { get; set; }
}
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Models.NorthwindIB.NH" assembly="Model_NorthwindIB_NH">
<class name="UserRole" table="`UserRole`" dynamic-update="true" optimistic-lock="dirty">
<id name="ID" column="`ID`" type="long" unsaved-value="0">
<generator class="native" />
</id>
<many-to-one name="User" column="`UserId`" class="User" />
<many-to-one name="Role" column="`RoleId`" class="Role" />
<property name="UserId" type="long" not-null="true" insert="false" update="false" />
<property name="RoleId" type="long" not-null="true" insert="false" update="false" />
</class>
</hibernate-mapping>
我怎样才能让这种多对一的工作(没有在模型中指定用户ID和角色ID属性):
public partial class UserRole
{
public virtual long ID { get; set; }
public virtual User User { get; set; }
public virtual Role Role { get; set; }
}
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Models.NorthwindIB.NH" assembly="Model_NorthwindIB_NH">
<class name="UserRole" table="`UserRole`" dynamic-update="true" optimistic-lock="dirty">
<id name="ID" column="`ID`" type="long" unsaved-value="0">
<generator class="native" />
</id>
<many-to-one name="User" column="`UserId`" class="User" not-null="true" />
<many-to-one name="Role" column="`RoleId`" class="Role" not-null="true" />
</class>
</hibernate-mapping>
错误抛出: 找不到匹配FK财产Models.NorthwindIB.NH.UserRole.User
难道这可以以某种方式在未来版本的BreezeJs中处理,或者目前有没有在模型中指定这些键的方法?还是有更多的比我所看到的?
编辑(非官方解决方案): 谢谢你指导我们在正确的方向。由于这是我们想要照顾的,我们根据Steve Schmitt所说的做了一些修改。
这里有一个改变的链接,所以你可以看到我们如何解决这个问题,所以它可以帮助其他任何人。 (请注意,此代码只适用于NHibernate的)
https://github.com/maca88/Breeze/commit/7a80c35cf0b20b5cffdef6d2eddeccd1bdeb3735
你的错误在哪里出现?初看起来,映射看起来没问题。 – Rippo
仅当使用第二个示例时,才会在元数据生成上抛出错误,因为我们没有为该类中的关系(用户和角色)指定键。我明白为什么会有错误,但我想知道是否有一种方法可以制作模型,而无需在其中指定关系键。 – RagingTroll
对不起,我不是100%清楚错误发生在哪里。你是说当你建立会话工厂或这是一个微风错误? – Rippo