FirstOrDefault在外键上返回null

Dra*_*ica 5 c# nhibernate fluent-nhibernate

可以说我们有以下型号:

public class ReadingOrder
{
    public virtual int Id { get; set; }
    public virtual Order Order { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

制图:

Table("db_ReadingOrder");
Id(o => o.Id).Column("Id").GeneratedBy.Identity();
References(o => o.Order, "OrderId");
Run Code Online (Sandbox Code Playgroud)

我想获得ReadingOrder它具有orderId与1(例如)相等.但是当我尝试a时FirstOrDefault,查询返回null:

var readingO = _repositoryFactory.GetRepository<ReadingOrder>().FirstOrDefault(xz => xz.Order.Id == 1);
Run Code Online (Sandbox Code Playgroud)

如果我得到所有这些并在申请FirstOrDefault作品后,但它的愚蠢:

var readingOrderList1 = _repositoryFactory.GetRepository<ReadingOrder>()
                         .GetAll().FirstOrDefault(xz => xz.Order.Id == 1);
Run Code Online (Sandbox Code Playgroud)

存储库中的方法具有以下格式:

public T FirstOrDefault(Expression<Func<T, bool>> predicate)
{
   return _session.Query<T>().FirstOrDefault(predicate);
}
Run Code Online (Sandbox Code Playgroud)

简单的东西,但不工作.如果我去寻找一个正常的房产,那么Id一切都按预期进行.此外,如果我从日志中获取生成的查询并将其放在sqlite中,它将成功运行并返回读取顺序.NHibernate有错误吗?是映射问题吗?或者是SQLite的问题?

Dra*_*ica 1

好吧,终于我找到了问题:外键列的名称“OrderId”。在这种情况下, Nhibernate 会查找“Hibernate.Order”,我不知道为什么,但是在我更改列的名称后,现在从数据库中检索该项目。谢谢大家的答案!我向用户Syed Farjad Zia Zaid i提供了赏金,因为他帮助我隔离了问题。很明显这是 Nhibernate 的问题,所以再次感谢您。