2012-04-24 2 views
1

У меня есть два класса, которые я пытаюсь сопоставить в Loquacious Nhibernate.Loquacious Nhibernate и builtID внешний ключ

отображение, как следующее

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

я не уверен, что я делаю неправильно, это похоже, что он должен работать, но я уже несколько секунд стучал головой об этом и никуда не денусь. Любые идеи о том, что я делаю неправильно?

ответ

1

Наконец-то понял это, разместив это для всех, кто приходит.

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

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

Это решило проблему. Должен заметить это, когда я посмотрел на подпись функции, но я полностью ее пропустил.

Смежные вопросы