Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
C# IManyToManyCollectionInstance约定创建额外表_C#_Postgresql_Nhibernate_Fluent Nhibernate_Nhibernate Mapping - Fatal编程技术网

C# IManyToManyCollectionInstance约定创建额外表

C# IManyToManyCollectionInstance约定创建额外表,c#,postgresql,nhibernate,fluent-nhibernate,nhibernate-mapping,C#,Postgresql,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我有一个流畅的基于NHibernate约定的映射,在我的股票购买实体和我的股票销售实体之间具有多对多关系 我创建了以下约定: public class ManyToManyLinkedTableConvention : IHasManyToManyConvention { public void Apply(FluentNHibernate.Conventions.Instances.IManyToManyCollectionInstance instance) {

我有一个流畅的基于NHibernate约定的映射,在我的
股票购买
实体和我的
股票销售
实体之间具有多对多关系

我创建了以下约定:

public class ManyToManyLinkedTableConvention : IHasManyToManyConvention
{
    public void Apply(FluentNHibernate.Conventions.Instances.IManyToManyCollectionInstance instance)
    {
        var naming = new NamingStrategy();
        if (StringComparer.InvariantCultureIgnoreCase.Compare(instance.EntityType.Name, instance.OtherSide.EntityType.Name) > 0)
        {
            instance.Table(naming.Quote(
                string.Format(
                    "{0}To{1}",
                    Inflector.Inflector.Pluralize(instance.EntityType.Name),
                    Inflector.Inflector.Pluralize(instance.ChildType.Name))));
            instance.Not.Inverse();
        }
        else
        {
            instance.Inverse();
        }
    }
}
当我使用hbm2ddl函数时,它完全按照我的要求构建表:

CREATE TABLE "StockSalesToStockPurchases"
(
  stocksale_id uuid NOT NULL,
  stockpurchase_id uuid NOT NULL,
  CONSTRAINT fkee886e07285f29f1 FOREIGN KEY (stockpurchase_id)
      REFERENCES "StockPurchases" (stockpurchaseid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fkee886e073b8be3d9 FOREIGN KEY (stocksale_id)
      REFERENCES "StockSales" (stocksaleid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);
。。。但奇怪的是,它还创建了第二个表:

CREATE TABLE stockpurchasestostocksales
(
  stockpurchase_id uuid NOT NULL,
  stocksale_id uuid NOT NULL,
  CONSTRAINT fk396e0343285f29f1 FOREIGN KEY (stockpurchase_id)
      REFERENCES "StockPurchases" (stockpurchaseid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk396e03433b8be3d9 FOREIGN KEY (stocksale_id)
      REFERENCES "StockSales" (stocksaleid) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);

它为什么要这样做,我该如何阻止它?

好的,我知道了怎么做。如果有更好的办法,请告诉我

public class ManyToManyLinkedTableConvention : IHasManyToManyConvention
{
    public void Apply(IManyToManyCollectionInstance instance)
    {
        var naming = new NamingStrategy();
        string firstName;
        string secondName;

        if (StringComparer.InvariantCultureIgnoreCase.Compare(instance.EntityType.Name, instance.OtherSide.EntityType.Name) >
            0)
        {
            firstName = instance.EntityType.Name;
            secondName = instance.OtherSide.EntityType.Name;
        }
        else
        {
            secondName = instance.EntityType.Name;
            firstName = instance.OtherSide.EntityType.Name;
            instance.Not.Inverse();
        }

        instance.Table(naming.Quote(
            string.Format(
                "{0}To{1}",
                Inflector.Inflector.Pluralize(firstName),
                Inflector.Inflector.Pluralize(secondName))));
    }
}