Ok 오브젝트와 외래 키가 2 개 있습니다.FluentNHibernate ForeignKey 제약을 사용하는 일대일
첫 번째 개체는입니다.
public class OutboundEmailMap : ClassMap<OutboundEmail>
{
public OutboundEmailMap()
{
Table("OutboundEmail");
Id(x => x.Id, "OutboundEmailId")
.UnsavedValue(0)
.GeneratedBy.Identity();
Map(x => x.OutboundEmailGuid);
Map(x => x.FromAccountName);
Map(x => x.ToAccountName);
Map(x => x.FromContactFirstName);
Map(x => x.FromContactLastName);
Map(x => x.ToContactFirstName);
Map(x => x.ToContactLastName);
Map(x => x.FromEmailAddress);
Map(x => x.ToEmailAddress);
Map(x => x.EmailTemplateID);
Map(x => x.SentDate);
Map(x => x.Subject);
Map(x => x.XMLTokenDictionary);
Map(x => x.IsFax);
Map(x => x.TransmittalId);
//References<Transmittal>(x => x.Transmittal)
// .Column("TransmittalID")
// .LazyLoad()
// .Cascade.None();
HasOne<OutboundEmailStatus>(x => x.Status)
.ForeignKey("FK_OutboundEmailStatus_OutboundEmail")
.Cascade.None();
}
}
제 2 클래스
public class OutboundEmailStatusMap : ClassMap<OutboundEmailStatus>
{
public OutboundEmailStatusMap()
{
Table("OutboundEmailStatus");
Id(x => x.Id, "OutboundEmailStatusID")
.UnsavedValue(0)
.GeneratedBy.Identity();
References(x => x.OutboundEmail, "OutboundemailID");
Map(x => x.EmailStatus, "EmailStatusID");
Map(x => x.EmailStatusDate);
}
}
입니다 그리고 외래 키는
USE [Mail]
GO
ALTER TABLE [dbo].[OutboundEmailStatus] WITH CHECK ADD CONSTRAINT [FK_OutboundEmailStatus_OutboundEmail] FOREIGN KEY([OutboundEmailID])
REFERENCES [dbo].[OutboundEmail] ([OutboundEmailID])
GO
ALTER TABLE [dbo].[OutboundEmailStatus] CHECK CONSTRAINT [FK_OutboundEmailStatus_OutboundEmail]
GO
입니다 그리고 마지막으로이 그래서 문제가
SELECT top 20 this_.OutboundEmailId as Outbound1_1_1_,
this_.OutboundEmailGuid as Outbound2_1_1_,
this_.FromAccountName as FromAcco3_1_1_,
this_.ToAccountName as ToAccoun4_1_1_,
this_.FromContactFirstName as FromCont5_1_1_,
this_.FromContactLastName as FromCont6_1_1_,
this_.ToContactFirstName as ToContac7_1_1_,
this_.ToContactLastName as ToContac8_1_1_,
this_.FromEmailAddress as FromEmai9_1_1_,
this_.ToEmailAddress as ToEmail10_1_1_,
this_.EmailTemplateID as EmailTe11_1_1_,
this_.SentDate as SentDate1_1_,
this_.Subject as Subject1_1_,
this_.XMLTokenDictionary as XMLToke14_1_1_,
this_.IsFax as IsFax1_1_,
this_.TransmittalId as Transmi16_1_1_,
outboundem2_.OutboundEmailStatusID as Outbound1_7_0_,
outboundem2_.EmailStatusID as EmailSta2_7_0_,
outboundem2_.EmailStatusDate as EmailSta3_7_0_,
outboundem2_.OutboundemailID as Outbound4_7_0_
FROM OutboundEmail this_
left outer join OutboundEmailStatus outboundem2_
on this_.OutboundEmailId = outboundem2_.OutboundEmailStatusID
WHERE this_.TransmittalId = '7789322e-acd6-4cb8-9c43-5bdaec52aa8a' /* @p0 */
ORDER BY this_.ToAccountName asc
생성 된 쿼리입니다 보시다시피, 이유가 무엇이든간에 외래 키를 OutboundEmailID 대신 OutboundEmailStatusID에 연결하더라도 외래 키를 사용하려고 시도합니다.
이 문제가 발생할 수있는 이유 또는 다른 방법을 알고있는 분은 알려 주시기 바랍니다.
내게도 이것이 어리석은 것처럼 보입니다.
예, 우리는 OutboundEmail 테이블에 키를 넣는 것에 대해 이야기하고있었습니다. 귀하의 의견을 보내 주셔서 감사 드리며 많은 의미가 있습니다. – MattB
그리고 나는 투표 할만한 충분한 평판이 없다고 생각한다. ( – MattB