2010-10-06 26 views
3

J'utilise des conventions couramment-NHibernate carte mes entités:En utilisant fluent-nhibernate, y a-t-il une convention pour rendre la colonne de clé étrangère dans une relation un-à-plusieurs non nulle?

public class HasManyConvention : IHasManyConvention 
    { 
     public void Apply(FluentNHibernate.Conventions.Instances.IOneToManyCollectionInstance instance) 
     { 
      instance.Key.Column(instance.EntityType.Name + "ID"); 
      instance.Cascade.AllDeleteOrphan(); 
     } 
    } 

si cette convention générer le mappage de mise en veille prolongée suivant:

<class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="ParentType, ParentTypeAssembly" table="ParentTable"> 
    <id name="ParentIDID" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" unsaved-value="0"> 
    <column name="ParentID" /> 
    <generator class="identity" /> 
    </id> 

    <bag cascade="all-delete-orphan" name="Childs" mutable="true"> 
     <key> 
     <column name="ParentID" /> 
     </key> 
     <one-to-many class="ChildType, ChildTypeAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
    </bag> 
    </class> 
</hibernate-mapping> 

Comment puis-je modifier la convention pour faire le ParentID dans la table enfant non nulle?

Il ressemblera à ceci:

<key> 
    <column name="ParentID" not-null="true" /> 
    </key> 

Répondre

0

Il ne semble pas y avoir de façon de le faire dans la convention. En regardant le tests pour implémenter le HasManyConvention et les méthodes sur l'interface IOneToManyCollectionInstance, je ne vois aucun moyen de définir non-null. Toutefois, vous pouvez jeter un oeil à ce question.