При использовании fluent-nhibernate существует соглашение, согласно которому столбец внешнего ключа в отношении один-ко-многим не равен нулю? - PullRequest
3 голосов
/ 06 октября 2010

Я использую соглашения о свободном владении для отображения своих сущностей:

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

, поэтому это соглашение генерирует следующее отображение спящего режима:

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

1 Ответ

0 голосов
/ 06 октября 2010

Кажется, нет никакого способа сделать это в соглашении.Глядя на тесты для реализации HasManyConvention и методы интерфейса IOneToManyCollectionInstance, я не вижу способа установить not-null.

Возможно, вы захотите взглянуть на это вопрос хотя.

...