2012-10-31 137 views
1

我使用FluentNH自動映射和約定。我成立了一個多到許多約定,例如:流利的nhibernate多對多慣例automapping

public class HasManyToManyConvention : IHasManyToManyConvention 
    { 
     public void Apply(IManyToManyCollectionInstance instance) 
     { 
      instance.Key.Column(instance.EntityType.Name + "Id"); 
      instance.Relationship.Column(instance.Relationship.StringIdentifierForModel + "Id"); 
     } 
    } 

假設這些都是我的表: 用戶(ID,用戶名,密碼), 角色(ID,姓名)

在數據庫生成,關聯表正在生成正常: UserInRole(UserId,RoleId)

但是,它沒有組合主鍵集。任何想法如何從公約中解決這個問題?

有人嗎?可能它是目前不被Fluent支持的嗎?

+0

每個對'instance.Relationship.Column()'的調用都會將另一個調用添加到'instance.Relation.Columns'集合中的現有列,以便解釋爲什麼要獲得組合主鍵集。我目前正在尋找重置列的方法,但到目前爲止,我一直運氣不佳。 –

+0

請參考我的相關問題:http://stackoverflow.com/questions/9772230/overriding-child-key-column-name-in-hasmanytomanyconvention –

+0

@SandorDrieënhuizen引用的帖子已被刪除。 –

回答

0

原來公約應該保持不變。但是,我現在使用ISet <用戶>和ISet <角色>,而不是使用IList <用戶>和IList <角色>。現在NHibernate會自動在關聯表上創建一個複合主鍵。

相關問題