EF Core 2.2.6-实体更新后未加载导航属性

时间:2019-12-13 10:22:13

标签: c# lazy-loading ef-core-2.2

我正在使用带有延迟加载代理的EF core 2.2.6。

实体:

public partial class WorkflowTask : BaseIdEntity
{
        public virtual ICollection<WorkflowTaskUsers> WorkflowTaskUsers { get; set; } = new HashSet<WorkflowTaskUser>();
}

public partial class WorkflowTaskUser : BaseIdEntity
    {
        public virtual User User { get; set; }
        public int UserId { get; set; }
        public virtual WorkflowTask WorkflowTask { get; set; }
        public Guid WorkflowTaskId { get; set; }
    }

public abstract class BaseIdEntity : BaseEntity, IIdEntity<int>
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
    }

存储库:

public async Task<TEntity> UpdateAsync<TEntity, TId>(TEntity entity, bool save = true)
            where TEntity : class, IIdEntity<TId>
        {
            EntityEntry<TEntity> result = _context.Set<TEntity>().Update(entity);

            if (save)
            {
                await SaveChangesAsync();
            }

            return result.Entity;
        }

如果我加载现有的工作流程任务,则将新的WorkflowTaskUser添加到其WorkflowTaskUsers-Collection并调用存储库的update函数, ef核心在上下文中添加了一个新的WorkflowTasUser(正确)。

task.WorkflowTaskUsers.Add(new WorkflowTaskUser()
                    {
                        UserId = userId,
                        WorkflowTaskId = task.Id,
                    });

var updatedTask = await _repository.UpdateAsync(task);

但是在updatedTask.WorkflowTaskUsers的新WorkflowTaskUser对象中,User属性为null,而不是UserProxy。 WorkflowTask属性已正确加载。

返回的WorkflowTaskUser对象(Benutzer表示User,而BenutzerId表示UserId):

enter image description here

在更新任务对象后,如何使WorkflowTaskUser.User属性正确加载?

(注意:此问题仅涉及新添加的WorkflowTaskUsers。在更新任务对象后,将正确加载现有的WorkflowTaskUsers。)

0 个答案:

没有答案