FluentNHibernate действует по-разному на разных машинах - PullRequest
2 голосов
/ 05 марта 2010

У меня возникли проблемы с FluentNHibernate, и я надеюсь, что кто-то может мне помочь.

У меня есть отношение многие ко многим между двумя классами с именами CampaignAreas и CampaignProducts. К сожалению, Fluent не сопоставляет таблицу отношений с тем же именем таблицы на моем компьютере, как на моих коллегах. Он называется CampaignProductsToCampaignAreas и CampaignAreasToCampaignProducts соответственно.

У нас точно такая же версия кода, те же самые dll'ы для NH, свободно и т. Д., И мы несколько раз перестраивали и переустанавливали IIS, так что это не что-то из этого основного.

Есть идеи как это исправить?

Ответы [ 3 ]

2 голосов
/ 05 марта 2010

В зависимости от версии Fluent NHibernate, которую вы используете, были некоторые условия гонки с именами таблиц в двунаправленном соотношении «многие ко многим»; FNH раньше выбирал ту сторону отношений, которую он обнаружил первой, и по любой причине .Net предоставил бы их в другом порядке (мы просто называем Assembly.GetTypes()).

Во всяком случае, я отвлекся. Попробуйте обновить до последней версии FNH, и я также рекомендую вам следовать предложению Мэгги и использовать соглашение для управления именами таблиц.

1 голос
/ 05 марта 2010

Я использую это соглашение для именования таблицы «многие ко многим» с помощью AutoMapping

  public class CustomManyToManyTableNameConvention : ManyToManyTableNameConvention
  {
    protected override string GetBiDirectionalTableName(IManyToManyCollectionInspector collection, IManyToManyCollectionInspector otherSide)
    {
      return String.Format("{1}{0}", collection.EntityType.Name, otherSide.EntityType.Name);
    }

    protected override string GetUniDirectionalTableName(IManyToManyCollectionInspector collection)
    {
      return String.Format("{1}{0}", collection.EntityType.Name, collection.ChildType.Name);
    }
  }
0 голосов
/ 05 марта 2010

Я не знаю свободно, но вы должны быть в состоянии указать имя таблицы отношения «многие ко многим». В любом случае это будет чище.

...