2010-10-06 45 views
3

我使用流利,NHibernate的約定來映射我的實體:使用fluent-nhibernate,是否有一致使一對多關係中的外鍵列不爲null?

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

所以這個約定生成以下Hibernate映射:

<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> 

如何修改該公約,使在該PARENTID子表不爲空?

因此,這將是這樣的:

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

回答

0

雖然目前沒有出現任何方式在公約中做到這一點。查看用於實現HasManyConvention的tests以及IOneToManyCollectionInstance接口上的方法我沒有看到任何設置非null的方法。

雖然你可能想看看這個question

相關問題