Razor Pages - 一对多关系

Posted

技术标签:

【中文标题】Razor Pages - 一对多关系【英文标题】:Razor Pages - Relationship One-To-Many 【发布时间】:2021-06-19 16:05:28 【问题描述】:

我试图呈现一对多的关系,但总是出现错误,我无法继续前进。 如果有人能找出错误,非常感谢。 最终目标是在 Villas 表中选择一条记录,并能够关联另一个表中的记录。 谢谢

using Microsoft.EntityFrameworkCore;

namespace LeisureVillas.RazorPages.Models

    public class VillaStatAContext : DbContext
    
        public DbSet<StatementA> Tbl_Statement_Autos  get; set; 
        public DbSet<Villa> Tbl_Villas  get; set; 
        public VillaStatAContext(DbContextOptions<VillaStatAContext> options) : base(options)
        
        
        #region Required
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        
           modelBuilder.Entity<Villa>()
               .HasMany<StatementA>(s => s.StatementAs)
               .WithOne(p => p.Villas)
               .HasForeignKey(s => s.Stat_A_Villas);
            #endregion
        
    


using LeisureVillas.RazorPages.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Collections.Generic;
using System.Linq;

namespace LeisureVillas.RazorPages.Pages

    [Authorize(Roles = "Manager")]
    public class VillaStatementA : PageModel
    
        private readonly VillaStatAContext db = null;

        public List<Villa> Villas  get; set; 
        public List<StatementA> StatementAs  get; set; 

        public void OnGet()
        
            this.Villas = (from e in db.Tbl_Villas orderby e.Vill_Name select e).ToList();
        
    

【问题讨论】:

有什么错误? 此时它出现错误,因为我设置了 db = null 并且我不能从这里开始 我打算把两张表的关系放到cshtml页面 如果你这样做,它不会为空:db = new VillaStatAContext() 您可能希望使用依赖注入来提供VillaStatAContext 作为页面模型构造函数。 【参考方案1】:

使用注释中提到的依赖注入:

[Authorize(Roles = "Manager")]
public class VillaStatementA : PageModel

    private readonly VillaStatAContext _db;

    public VillaStatementA(VillaStatAContext db)
    
        _db = db;
    

    public List<Villa> Villas  get; set; 
    public List<StatementA> StatementAs  get; set; 

    public void OnGet()
    
        this.Villas = (from e in db.Tbl_Villas orderby e.Vill_Name select e).ToList();
    

【讨论】:

目前代码没有任何错误,但是html没有打开。它显示以下错误:“处理此请求时出现意外错误。” 切换到开发环境显示详细信息。【参考方案2】:
@page
@model VillaStatementA
<h3>Suppliers Automatic</h3>
<div class="flex-cont">
    <div class="flex-item-left">
        <font size="2" face="Courier New">
            <table>
                <tr>
                    <th style="display:none;" bgcolor="#5D7B9D"><font color="#fff">ID</font></th>
                    <th bgcolor="#5D7B9D"><font color="#fff">Code</font></th>
                    <th bgcolor="#5D7B9D"><font color="#fff">Customer Name</font></th>
                    <th bgcolor="#5D7B9D"><font color="#fff">Address</font></th>
                    <th bgcolor="#5D7B9D"><font color="#fff">Location</font></th>
                </tr>
                @foreach (var item in Model.Villas)
                
                    <tr>
                        <td style="display:none;">@item.Vill_ID </td>
                        <td>@item.Vill_Code</td>
                        <td>@item.Vill_Name</td>
                        <td>@item.Vill_Address</td>
                        <td>@item.Vill_Location</td>
                    </tr>
                
            </table>
        </font>
    </div>
    <div class="flex-item-right">2</div>
    <font size="2" face="Courier New">
        <table>
            <tr>
                <th style="display:none;" bgcolor="#5D7B9D"><font color="#fff">ID</font></th>
                <th bgcolor="#5D7B9D"><font color="#fff">Villa</font></th>
                <th bgcolor="#5D7B9D"><font color="#fff">Amount Débit</font></th>
               <th bgcolor="#5D7B9D"><font color="#fff">Memo</font></th>
            </tr>
            @foreach (var item in Model.StatementAs)
            
                <tr>
                    <td style="display:none;">@item.Stat_A_Id</td>
                    <td>@item.Stat_A_Villas</td>
                    <td>@item.Stat_A_Amount_Debt</td>
                    <td>@item.Stat_A_Memo</td>
                </tr>
            
        </table>
    </font>
</div>

【讨论】:

目前代码没有任何错误,但是html没有打开。它显示以下错误:“处理此请求时出现意外错误。” 您应该调试以查找错误详细信息。 我什么都看不见了!! 6小时后我必须起床去上班。非常感谢您的帮助。

以上是关于Razor Pages - 一对多关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 一对多关系和一对一关系

数据库一对一对多多对多关系

如何在 DynamoDB 中建模一对一、一对多和多对多关系

一对多和一对多的关系 laravel

Hibernate关联关系配置(一对多一对一和多对多)

gorm 关系一对一,一对多,多对多查询