C# 在NHibernate中执行内部联接
在NHibernate中进行查询时,我不断遇到异常 这是以下查询:C# 在NHibernate中执行内部联接,c#,nhibernate,C#,Nhibernate,在NHibernate中进行查询时,我不断遇到异常 这是以下查询: //Query tblSentEmails to pull out all of the records according to that lngMergeID strQuery = "SELECT strEmailAddress, tblSentEmails.strSubject FROM tblSentEmails INNER JOIN tblRec
//Query tblSentEmails to pull out all of the records according to that lngMergeID
strQuery =
"SELECT strEmailAddress, tblSentEmails.strSubject FROM tblSentEmails INNER JOIN tblRecipients ON tblSentEmails.strEmailSendID=tblRecipients.strEmailSendID WHERE tblSentEmails.lngMergeID ='" +
lngMergeID + "' ORDER BY strEmailAddress ASC";
这是执行它的行
IQuery qryGetMergedEmails = _session.CreateSQLQuery(strQuery);
在这之后,我不断得到一个异常,说明有一个识别错误
这是原始查询:
SELECT strEmailAddress, tblSentEmails.strSubject
FROM tblSentEmails INNER JOIN tblRecipients
ON tblSentEmails.strEmailSendID=tblRecipients.strEmailSendID
WHERE tblSentEmails.lngMergeID='11099'
ORDER BY strEmailAddress ASC
请注意,lngMergeID='11099'仅用于此示例,我将通过参数传递它
我是否正确运行此查询
编辑:这是我的映射:
public tblSentEmailsMap()
{
//Id(x => x.lngEmailID);
Id(x => x.strEmailSendID).Not.Nullable();
Map(x => x.dtmSent).Nullable();
Map(x => x.strSubject).Nullable();
Map(x => x.strBody).Nullable();
Map(x => x.strConversationID).Nullable();
Map(x => x.strConversationTopic).Nullable();
Map(x => x.strConversationIndex).Nullable();
Map(x => x.dtmReplied).Not.Nullable();
Map(x => x.dtmOpened).Not.Nullable();
Map(x => x.dtmClicked).Not.Nullable();
Map(x => x.UserId).Not.Nullable();
Map(x => x.blnTrackOpens).Nullable();
Map(x => x.blnTrackClicks).Nullable();
Map(x => x.blnTrackReplies).Nullable();
Map(x => x.blnOutlookRec).Nullable();
Map(x => x.lngMergeID).Nullable();
Map(x => x.strSenderEmailAddress).Not.Nullable();
}
没有指向“我的收件人”表的属性链接。只需从电子邮件表中获取PK,并通过不同的查询处理器添加即可 试试这个
var list = session.QueryOver<tblSentEmails >().JoinQueryOver(tblsentsmails =>
tblsentsmails.tblrecipients ).Where(tblsentsmails => tblsentsmails.lngMergeID == 11099)
.OrderBy(tblsentsmails =>tblsentsmails.strEmailAddress ).List();
var list=session.QueryOver().JoinQueryOver(tblsentsmails=>
tblsentsmails.tblrecipients)。其中(tblsentsmails=>tblsentsmails.lngMergeID==11099)
.OrderBy(tblsentsmails=>tblsentsmails.strEmailAddress).List();
Nevermind最终使用了以下功能:
strQuery = "SELECT strEmailAddress, strSubject from tblSentEmails INNER JOIN tblRecipients ON tblSentEmails.strEmailSendID=tblRecipients.strEmailSendID WHERE tblSentEmails.lngMergeID=:mergeID ORDER BY strEmailAddress ASC";
var qry = _session.CreateSQLQuery(strQuery)
.SetParameter("mergeID", lngMergeID)
.List();
结果一切正常。也许不是最好的解决方案,但现在已经足够了 忘了提及,tblRecipients@FerasI的tblSentEmails中没有任何属性已经解决了这个问题,但感谢您的输入。看看我贴的答案。