Blazor 服务器应用程序;在浏览器中刷新作为类的属性返回 nul

Posted

技术标签:

【中文标题】Blazor 服务器应用程序;在浏览器中刷新作为类的属性返回 nul【英文标题】:Blazor Server App; Refresh in browser a property that is a class comes back nul 【发布时间】:2021-04-10 19:35:37 【问题描述】:

应用程序:Blazor Server .NET 5 使用实体框架核心 D B; Azure SQL 数据库

一切正常,除非我刷新浏览器,GetActivitys() 返回的 Helper 属性为空。 Activity中的Helper属性需要打标签吗?

    public class ApplicationDbContext : IdentityDbContext
    
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        
        

        public DbSet<Activity> Activitys  get; set; 
        public DbSet<Helper> Helpers  get; set; 
   

   public class DataAccessService : IDataAccessService
    
        private readonly ApplicationDbContext _context;
        public DataAccessService(ApplicationDbContext context)
        
            _context = context;
        

        public async Task<List<Activity>> GetActivitys()
        
           var list = await _context.Activitys.ToListAsync<Activity>();
               return list;
        
    

    public class Activity
    
        [Key]
        [Column("Id")]
        [JsonPropertyName("Id")]
        public int Id  get; set; 

        [Column("Task")]
        [Required]
        [JsonPropertyName("Task")]
        public string Task  get; set; 

        [Column("Helper")]
        [JsonPropertyName("Helper")]
        public Helper Helper  get; set; 
   

    public class Helper
    
        [Key]
        [Column("Id")]
        [JsonPropertyName("Id")]
        public int Id  get; set; 

        [Column("Name")]
        [Required]
        [JsonPropertyName("Name")
   

【问题讨论】:

【参考方案1】:

如果您想在通过.ToListAsync() 实现查询之后包含导航属性,则必须在实现之前添加一个链式方法.Include(activity =&gt; activity.Helper)

【讨论】:

您能否详细说明一下,谢谢。你的意思是这样的: _context.Activitys.ToListAsync() 变成 _context.Activitys.Include(activity => activity.Helper).ToListAsync() 是的,就是这样。 事实证明,我有 2 个实体属性。当我为两者都这样做时,它起作用了;谢谢 这个要求有很好的参考吗?我能找到的唯一参考是这篇文章!再次感谢。

以上是关于Blazor 服务器应用程序;在浏览器中刷新作为类的属性返回 nul的主要内容,如果未能解决你的问题,请参考以下文章

使用 Blazor 向其他浏览器发送通知

如何从服务器端 Blazor 应用程序中的 Blazor 组件调用 razor 页面而不导致页面刷新

Blazor-断开连接后重新加载浏览器

如何更改刷新 Blazor PWA 应用程序时出现的“正在授权...”消息?

Blazor Server 如何跨多个选项卡和刷新保存数据

为啥我的 Blazor 服务器应用程序的计时器没有刷新其组件