DbContext 返回一些空值

问题描述 投票:0回答:1

我在我的存储库中使用

return _dbContext.Groups;
,它返回我的所有组对象,但 one 对象在 TeamLeader 中返回空值字段。

这是我的小组课程

public class Group
{
    [Key]
    public string GroupCode { get; set; } = string.Empty;

    public string Name { get; set; } = string.Empty;


    [ForeignKey("Application")]
    public string? ApplicationCode { get; set; }
    public virtual Application? Application { get; set; }


    [ForeignKey("TeamLeader")]
    public string TeamLeaderCode { get; set; } = string.Empty;
    public virtual User? TeamLeader { get; set; }


    public bool IsForChangeManagers { get; set; }

    public virtual IEnumerable<User>? Members { get; set; }
}

我正在使用延迟加载

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseLazyLoadingProxies();
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<Group>(g =>
            {
                g.HasOne(g => g.TeamLeader).WithOne().HasForeignKey<Group>(g => g.TeamLeaderCode);
                g.HasMany(g => g.Members).WithMany(u => u.Groups);
            });
        }

我也尝试过这个,但它也在该字段中返回 null

 List<Group> groupList = new();
        var allGroup = _dbContext.Groups;

        foreach (var group in allGroup)
        {
            if (group.TeamLeader == null)
            {
                group.TeamLeader = _userRepository.GetUserByCode(group.TeamLeaderCode);
                groupList.Add(group);
            } else
            {
                groupList.Add(group);
            }
        }
        return groupList;

结果如下:

entity-framework dbcontext
1个回答
0
投票

找到办法了,我只需要显式调用组长属性即可

       List<Group> groupList = _dbContext.Groups.ToList();
        var countList = _dbContext.Groups.Count();

        for (int i = 0; i < countList; i++)
        {
            groupList[i].TeamLeader = _userRepository.GetUserByCode(groupList[i].TeamLeaderCode);

        }
       
        return groupList;
© www.soinside.com 2019 - 2024. All rights reserved.