无法获取多对多表属性的数据

Posted

技术标签:

【中文标题】无法获取多对多表属性的数据【英文标题】:Unable to fetch data for a many to many table property 【发布时间】:2021-10-01 07:12:29 【问题描述】:

您好,我需要帮助。

我正在使用 ASP.Net Core 3.0 和 EF Core... 我需要编辑一个具有导航属性的多对多表。

我尝试了下面的代码,我可以获取发票数据,但我在 ProductInvoices 属性上得到空值,该属性也是多对多关系表的链接。

        // GET: Invoices/Edit
        public async Task<IActionResult> Edit(int? id)
        

            var invoice = await _context.Invoices.Where(i => i.InvoiceId == id).FirstOrDefaultAsync();

            return View(invoice);
        
    public class Product
    
        [Key]
        public int ProductId  get; set; 

        public int ProductsItemInStock  get; set; 

        public decimal CostPerItem  get; set; 

        public string ItemName  get; set; 

        public IList<ProductInvoice> ProductInvoices  get; set; 
    


    public class Invoice
    
        [Key]
        public int InvoiceId  get; set; 

        public DateTime CreatedDate  get; set; 

        public Guid CreateByUser  get; set; 

        public int TotalInvoice  get; set; 

        public IList<ProductInvoice> ProductInvoices  get; set; 
    
    
        public class ProductInvoice
    
        [Key]
        public int ProductId  get; set; 
        public Product Product  get; set; 

        [Key]
        public int InvoiceId  get; set; 
        public Invoice Invoice  get; set; 
    

【问题讨论】:

docs.microsoft.com/en-us/ef/core/querying/related-data 【参考方案1】:

试试这个

    public async Task<IActionResult> Edit(int? id)
    

        var invoice = await _context.Invoices.Include("ProductInvoices").Where(i => i.InvoiceId == id).FirstOrDefaultAsync();

        return View(invoice);
    

【讨论】:

你能告诉我一个可以学习 EF Core 的好教程吗?因为我确实阅读了 EF Core 的 MSDN 官方文档,但我找不到 MSDN 文档是完整的资源,但对于新手来说,您可以通过观看有关主题的 youtube 视频来学习,但最好的方法是边做边学。你可以关注entityframeworktutorial.net,但一定要练习。 您也可以使用 lambda 版本,例如 _context.Invoices.Include(x=>x.ProductInvoices)

以上是关于无法获取多对多表属性的数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Prisma 中的多对多表中获取元信息

多对多表应该有一个主键吗?

Mybatis 多表实现多对多查询添加操作

创建多对多表关系的三种方式

多对多 Spring Boot JPA 未填充多对多表

填充具有访问权限的多对多表