Я сидел здесь в течение часа, пытаясь понять это ...FluentNHibernate Many-to-One Ссылки, где внешний ключ не первичный ключ и имена столбцов отличаются
У меня есть 2 таблицы (сокращенно):
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)
у меня 2 классов, по существу, отражающие эти:
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; }
}
Как выполнить сопоставление «много-к-одному» в FluentNHibernate, чтобы получить учетную запись «Учетная запись», чтобы получить доверие? В частности, поскольку он связан с другим столбцом, чем первичный ключ Trust TRUSTID, а столбец, на который он ссылается, также называется по-разному (ACCTNBR vs. ACCOUNTNUMBER) ???? Вот что у меня есть до сих пор - как мне сделать ссылки на AccountHistoryMap для доверия?
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");
);
Я пробовал несколько различных вариаций выше линии, но не может получить что-нибудь, чтобы работать - это отодвигается AccountHistory данные и прокси-сервер для Trust; однако он не указывает строку доверия с заданным идентификатором.
Это должно быть что-то простое. Кто угодно?
Заранее спасибо.
Почему вы не принимаете ответ, если он вам помог? – Alex