gpt4 book ai didi

c# - FirstOrDefault 在外键上返回 null

转载 作者:太空狗 更新时间:2023-10-29 23:53:25 25 4
gpt4 key购买 nike

假设我们有以下模型:

public class ReadingOrder
{
public virtual int Id { get; set; }
public virtual Order Order { get; set; }
}

映射:

Table("db_ReadingOrder");
Id(o => o.Id).Column("Id").GeneratedBy.Identity();
References(o => o.Order, "OrderId");

我想获取 ReadingOrder,它的 orderId 等于 1(例如)。但是当我尝试 FirstOrDefault 时,查询返回 null :

var readingO = _repositoryFactory.GetRepository<ReadingOrder>().FirstOrDefault(xz => xz.Order.Id == 1);

如果我得到所有这些并在应用 FirstOrDefault 后工作,但它很愚蠢:

var readingOrderList1 = _repositoryFactory.GetRepository<ReadingOrder>()
.GetAll().FirstOrDefault(xz => xz.Order.Id == 1);

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

public T FirstOrDefault(Expression<Func<T, bool>> predicate)
{
return _session.Query<T>().FirstOrDefault(predicate);
}

简单的东西,但行不通。如果我选择普通属性,如 Id,一切都会按预期工作。此外,如果我从日志中获取生成的查询并将其放入 sqlite,它会成功运行并返回读取顺序。 NHibernate 中有错误吗?是映射问题吗?还是 SQLite 的问题?

最佳答案

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

关于c# - FirstOrDefault 在外键上返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31695961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com