1

Loquacious Nhibernate でマッピングしようとしている 2 つのクラスがあります。

マッピングは次のようになります

  public class FooMap : ClassMapping<Foo>
  {
    Table("FooTableName");
    ComposedId(compIDMapper =>
      {
        compIDMapper.Property(x => x.SomeInt, m => m.Column("SomeInt"));
        compIDMapper.ManyToOne(x => x.SomeReference, m => m.Column("SomeReference"));
      });
  }

  public class BarMap : ClassMapping<Bar>
  {
    Table("BarTableName");
    Id(x => x.ID, m => m.Column("barID"));

    ManyToOne(x => x.Foo, m => m.Columns( columnMapper =>
                                                             {
                                                               columnMapper.Name("SomeIntID"); //Both of these columns are in the BarTableName like they should be
                                                               columnMapper.Name("SomeReferenceID");
                                                             }));
  }

しかし、マッピングが構築されているときに、次のエラーが発生します。

Foreign key (FK554EAF2427B2CA28:BarTableName[SomeIntID])) must have same number of columns as the refe,renced primary key (FooTableName[SomeInt, SomeReference])

うまくいくように見えますが、しばらくの間これに頭を悩ませていて、どこにも行きませんでした。私が間違っていることについてのアイデアはありますか?

4

2 に答える 2

2

最後にこれを理解し、一緒に来る他の人のためにこれを投稿しました。

私の問題は、列マッパーを誤解していたことです。それが想定されているのは次のとおりです。

ManyToOne(x => x.Foo, m => m.Columns(new Action<IColumnMapper>[]
                                                                {
                                                                  colMapper => colMapper.Name("SomeIntID"),
                                                                  colMapper => colMapper.Name("SomeReferenceID")
                                                                }));

これで問題は解決しました。関数のシグネチャを見たときに気付くべきだったのですが、完全に見落としていました。

于 2012-04-28T01:52:44.057 に答える