未填充拥有的类型属性-EF Core 3.1

时间:2020-09-12 15:08:28

标签: asp.net-core .net-core entity-framework-core ef-core-3.1

我有以下实体:

ProjectGroup.cs

//Parts omitted for brevity
public class ProjectGroup : Entity<int>, IAggregateRoot
{
    private HashSet<Project> _projects;

    public IReadOnlyCollection<Project> Projects
        => this._projects.ToList().AsReadOnly();
}

Project.cs

//Parts omitted for brevity
public class Project: Entity<int>
{
    private HashSet<Task> _backlog;

    public IReadOnlyCollection<Task> Backlog
        => this._backlog.ToList().AsReadOnly();
}

Task.cs

//Parts omitted for brevity
public class Task : Entity<int>
{
    public TaskDescription Description { get; private set; }
}

TaskDescription.cs是一个固定值对象,它封装了Task.cs中感兴趣的属性。

我使用EF Core 3.1和SQL Server具有读/写持久性功能。在Task的{​​{1}}集合中为特定的Task插入新的Project可以正常工作,并且一切都插入到数据库中。

但是,当我从数据库中读取数据时出现问题。当我通过EF查询特定项目时,如下所示,即使数据库中有记录,ProjectGroup集合的每个成员的Description属性也为空。

Task

var projectGroup = await this.All() .Include(g => g.Projects).ThenInclude(p => p.Backlog).ThenInclude(t => t.Description) .AsNoTracking() .FirstOrDefaultAsync(g => g.Id == projectGroupId); var project = projectGroup.Projects.FirstOrDefault(p => p.Id == projectId); this.All()

这是dbContext.Set<ProjectGroup>()实体的EF配置:

Task

我最初在查询时没有第二个builder .OwnsOne(t => t.Description, description => { description.WithOwner(); }); ,正如我从官方文档中知道的那样,默认情况下会填充拥有类型,但不包含它们,但是由于这种方法不起作用,我认为我会尝试手动包含类型,但无济于事。

0 个答案:

没有答案