2012-11-16 16 views
6

W mojej bazie danych znajdują się tabele Przypisanie i Miejsce pracy, koncepcyjnie, każde zadanie ma miejsce w dokładnie jednym miejscu pracy. Przypisanie tabela zawiera kolumnę Workplace, który jest kluczem obcym przedstawieniu WorkplaceName kolumnę w Workplace tabeli.Odwzorowywanie klucza obcego na coś innego niż klucz podstawowy

Jest to schemat:

table Workplace (
    ID int primary key, 
    WorkplaceName int 
) 

table Assignment (
    Workplace int 
) 

A mój mapowania:

class Workplace 
{ 
    public virtual int ID { get; set; } 
    public virtual int WorkplaceName { get; set; } 
} 

class Assignment 
{ 
    public virtual Workplace { get; set; } 
} 

class AssignmentMap : ClassMap<Assignment> 
{ 
    public AssignmentMap() 
    { 
    References(a => a.Workplace); 
    } 
} 

W czasie wykonywania otrzymuję wyjątek

No wiersz z danym identyfikatorem [MyProject.Workplace # 2001]

Wydaje się, że problem polega na tym, że FH szuka wartości Właściwość Przypisanie.Workplace w kolumnie Workplace.ID, klucz podstawowy tabeli; poprawnym miejscem będzie kolumna Workplace.WorkplaceName. Próbowałem użyć metody ForeignName, myśląc, że mogę określić w ten sposób WorkplaceName. Jak mogę powiedzieć FH, jak dołączyć do właściwych kolumn?

Odpowiedz

2

Znalazłem odpowiedź tutaj: FluentNHibernate Many-To-One References where Foreign Key is not to Primary Key and column names are different

Rozwiązaniem było użycie PropertyRef; linia brzmi teraz:

References(x => x.Workplace).PropertyRef(x => x.WorkplaceName).Fetch.Join(); 

Co nie zdawałem sobie sprawy było to, że musiałem dać odniesienie do obiektu po stronie klienta za nieruchomość WorkplaceName, zamiast próbować pouczać mapowanie użyć po stronie serwera kolumna Nazwa stanowiska pracy.

0

myślę, to musi być coś

References(x => x.Workplace).Column("WorkplaceName")

+0

Próbowałem tego; to nie zmienia wyniku. Wierzę, że metoda 'Column' służy do określenia lokalnej nazwy kolumny, tak samo jak drugi argument do' References' - jednak mógłbym się mylić. – waldrumpus

Powiązane problemy