1

StockPurchaseエンティティとエンティティの間に多対多の関係を持つ Fluent NHibernate 規則ベースのマッピングがありStockSaleます。

次の規約を作成しました。

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

...奇妙なことに、2番目のテーブルも作成します。

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

なぜこれを行うのですか?どうすれば停止できますか?

4

1 に答える 1