我正在使用带有延迟加载代理的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):
在更新任务对象后,如何使WorkflowTaskUser.User属性正确加载?
(注意:此问题仅涉及新添加的WorkflowTaskUsers。在更新任务对象后,将正确加载现有的WorkflowTaskUsers。)