Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fluent nhibernate FluentNHibernate在不同机器上的作用不同_Fluent Nhibernate_Nhibernate Mapping - Fatal编程技术网

Fluent nhibernate FluentNHibernate在不同机器上的作用不同

Fluent nhibernate FluentNHibernate在不同机器上的作用不同,fluent-nhibernate,nhibernate-mapping,Fluent Nhibernate,Nhibernate Mapping,我遇到了FluentNHibernate的问题,希望有人能帮我解决 我在两个名为CampaignAreas和CampaignProducts的类之间存在多对多关系。遗憾的是,Fluent没有将关系表映射到我的计算机上与我的同事上相同的表名。它分别命名为活动产品活动区域和活动区域活动产品 我们有完全相同的代码版本,NH、fluent等都有相同的dll,我们已经多次重建和重置IIS,所以这不是任何基本的东西 你知道如何解决这个问题吗?我不知道Fluent,但是你应该能够指定多对多关系的表名。无论如何

我遇到了FluentNHibernate的问题,希望有人能帮我解决

我在两个名为CampaignAreas和CampaignProducts的类之间存在多对多关系。遗憾的是,Fluent没有将关系表映射到我的计算机上与我的同事上相同的表名。它分别命名为活动产品活动区域和活动区域活动产品

我们有完全相同的代码版本,NH、fluent等都有相同的dll,我们已经多次重建和重置IIS,所以这不是任何基本的东西


你知道如何解决这个问题吗?

我不知道Fluent,但是你应该能够指定多对多关系的表名。无论如何,这会更干净。

我使用此约定命名具有自动映射的多对多表

  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);
    }
  }

根据您使用的Fluent NHibernate版本,在双向多对多关系中存在一些命名表的竞争条件;FNH用于选择它首先找到的关系的哪一边,并且出于任何原因.Net将以不同的顺序给出它们(我们只调用
Assembly.GetTypes()


无论如何,我离题了。尝试升级到FNH的最新版本,我还建议您遵循并使用约定来控制表命名。

您是使用自动映射还是手动映射?问题是我试图避免自己编写映射。自动映射确实有效,所以除了在一台机器上更改名称之外,它不应该是一个问题。我和Christian有同样的问题。我正在使用FHN v.1.2和一个多对多约定,类似于您所建议的,但FHN仍然在我的机器和我同事的机器上生成不同的表名。除了显式设置表名,我还能做什么?