Ich habe hier eine Stunde lang sitzen versuchen, das herauszufinden ...FluentNHibernate Many-To-One Referenzen wo Fremdschlüssel nicht auf Primärschlüssel und Spaltennamen sind verschiedene
I 2 Tische haben (abgekürzt):
CREATE TABLE TRUST
(
TRUSTID NUMBER NOT NULL,
ACCTNBR VARCHAR(25) NOT NULL
)
CONSTRAINT TRUST_PK PRIMARY KEY (TRUSTID)
CREATE TABLE ACCOUNTHISTORY
(
ID NUMBER NOT NULL,
ACCOUNTNUMBER VARCHAR(25) NOT NULL,
TRANSAMT NUMBER(38,2) NOT NULL
POSTINGDATE DATE NOT NULL
)
CONSTRAINT ACCOUNTHISTORY_PK PRIMARY KEY (ID)
ich habe 2 Klassen, die im wesentlichen diese Spiegel:
public class Trust
{
public virtual int Id {get; set;}
public virtual string AccountNumber { get; set; }
}
public class AccountHistory
{
public virtual int Id { get; set; }
public virtual Trust Trust {get; set;}
public virtual DateTime PostingDate { get; set; }
public virtual decimal IncomeAmount { get; set; }
}
Wie mache ich das Viele-zu-Eins-Mapping in FluentNHibernate, um die AccountHistory mit einem Trust zu versehen? Insbesondere, da es in einer anderen Spalte als der Trust-Primärschlüssel von TRUSTID verwandt ist und die Spalte, auf die es verweist, auch anders benannt wird (ACCTNBR vs. ACCOUNTNUMBER)? Hier ist, was ich bisher habe - wie mache ich die Referenzen auf der AccountHistoryMap zu vertrauen ???
public class TrustMap : ClassMap<Trust>
{
public TrustMap()
{
Table("TRUST");
Id(x => x.Id).Column("TRUSTID");
Map(x => x.AccountNumber).Column("ACCTNBR");
}
}
public class AccountHistoryMap : ClassMap<AccountHistory>
{
public AccountHistoryMap()
{
Table("TRUSTACCTGHISTORY");
Id (x=>x.Id).Column("ID");
References<Trust>(x => x.Trust).Column("ACCOUNTNUMBER").ForeignKey("ACCTNBR").Fetch.Join();
Map(x => x.PostingDate).Column("POSTINGDATE");
);
Ich habe ein paar verschiedene Variationen der obigen Linie versucht, kann aber nichts an die Arbeit - es zurück AccountHistory Daten und einen Proxy für den Trust zieht; Es wird jedoch keine Trust-Zeile mit angegebenem Bezeichner angezeigt.
Dies muss etwas Einfaches sein. Jemand?
Vielen Dank im Voraus.
Warum nicht Sie akzeptieren die Antwort, wenn es Ihnen geholfen? – Alex