gpt4 book ai didi

c# - Entity Framework Code-First Eager Load parent child - children 始终为空

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:40 24 4
gpt4 key购买 nike

这是我的第一个代码优先项目,在 db-first 中从来没有遇到过问题,我记得。所以,我要么遗漏了一些明显的东西,要么我遗漏了某处规则。我不想使用延迟加载,考虑到使用预加载的许多示例,我不得不认为不需要这样做。

很简单。父记录为Listing,子记录为Bid实体:

public class Listing {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ListingID { get; set; }

[Required]
[StringLength(140)]
public string Title { get; set; }

//...etc.

public List<Bid> Bids { get; set; }

public Listing() {
Bids = new List<Bid>();
}
}

public class Bid {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int BidID { get; set; }

[Required]
public decimal Amount { get; set; }

//...etc.

public int ListingID { get; set; }

[ForeignKey("ListingID")]
public Listing Listing { get; set; }

public Bid() {
Listing = new Listing();
}
}

我正在使用 Include 来提取子记录:

        using (var db = new MyDbContext()) {
var listing = db.Listings
.Where(x => x.Active == true && x.UserID == "abc123")
.Include(x => x.Bids)
.FirstOrDefault();
}

子集合存在但始终为空(计数 = 0)- 它不会提取记录。他们肯定在 table 上。我可以手动查询并获取那些出价记录,没问题。基本上,我需要一个列表及其所有出价,与此类似:

select l.*, b.*
from Listing l
inner join Bid b on l.ListingID = b.ListingID
where l.Active = 1
and l.UserID = 'abc123'

缺少什么?这篇文章说我做对了:

https://msdn.microsoft.com/en-us/data/jj574232.aspx

最佳答案

想通了。我知道我以前做过这种类型的关系。我找到了一个较旧的项目,我在其中做了完全相同的事情。我所要做的就是删除 Bid 类中的构造函数。显然,如果您指定关系的双方,它会出错吗?我不知道......但现在它起作用了,它正在拉动预期的记录。令人沮丧!似乎他们可以添加一些验证来帮助您轻松地搬起石头砸自己的脚。如果它无效,很高兴知道这一点。

一切都和 OP 一样,除了这个类:

public class Bid {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int BidID { get; set; }

[Required]
public decimal Amount { get; set; }

//...etc.

public int ListingID { get; set; }

[ForeignKey("ListingID")]
public Listing Listing { get; set; }

//public Bid() {
// Listing = new Listing();
//}
}

关于c# - Entity Framework Code-First Eager Load parent child - children 始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039550/

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