nel mio database ci sono tavoli assegnazione e Workplace, concettualmente, ogni incarico avviene a esattamente un posto di lavoro. Il assegnazione tabella contiene una colonna Workplace, che è una chiave esterna che fa riferimento WorkplaceName colonna Workplace del tavolo.Mappatura una chiave esterna per qualcosa di diverso da una chiave primaria
Questo è lo schema:
table Workplace (
ID int primary key,
WorkplaceName int
)
table Assignment (
Workplace int
)
E il mio mappatura:
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);
}
}
In fase di esecuzione ottengo l'eccezione
No fila con l'identificatore dato esiste [MyProject.Workplace # 2001]
Il problema qui sembra essere che FH cerca il valore della proprietà Assignment. Workplace nella colonna Workplace.ID, la chiave primaria della tabella; la posizione corretta sarebbe la colonna Workplace.WorkplaceName. Ho provato a utilizzare il metodo ForeignName
, pensando di poter specificare WorkplaceName in questo modo. Come posso dire a FH come unire le colonne corrette?
L'ho provato; non cambia il risultato. Credo che il metodo 'Column' sia usato per specificare il nome della colonna locale, come il secondo argomento di' References' - potrei sbagliarmi comunque. – waldrumpus