У меня есть сущность ResumeBank, которая содержит список сущностей Resume. Резюме имеет список принадлежащих лиц.
В моем DBContext:
public DbSet<ResumeBank> ResumeBanks { get; set; }
public DbSet<Resume> BankResumes { get; set; }
и в OnModelCreating ():
modelBuilder.Entity<Resume>().OwnsMany(s => s.ResumeCategories, a =>
{
a.Property<DateTime>("CreatedDate");
a.Property<DateTime>("UpdatedDate");
a.ToTable("ResumeCategories");
});
Теперь в моем классе Respository для ResumeBank У меня есть следующее:
public async Task<ResumeBank> GetResumeBankAsync(int resumeBankID)
{
IQueryable<ResumeBank> query = ResumeBankContext.ResumeBanks
.Include(c => c.Resumes)
.Include(d => d.ResumeCategories);
query = query.Where(c => c.Id == resumeBankID);
return await query.FirstOrDefaultAsync();
}
Самое странное, что когда я запускаю его без точки останова, он вызывает исключение при вызове FirstOrDefaultAsyn c (). Однако, если я поставлю точку останова и когда она будет нажата, я go войду в свои местные жители windows и нажму на query.ResultsView, чтобы развернуть ее, а затем нажать Продолжить, она работает !!
Почему?
Также другой факт: если я закомментирую OwnsMany () в OnModelCreating () в DBContext, у меня не возникнет этой проблемы.
Я использую EntityFrameworkCare 3
Исключение составляет:
JobAssist.Services.ResumeBankMgmt.Infrastructure.Repositories.ResumeBankRepository: Information: Getting a ResumeBank for 1
'iisexpress.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.3\System.Diagnostics.StackTrace.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'iisexpress.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.3\System.Reflection.Metadata.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Exception thrown: 'System.NotSupportedException' in System.Private.CoreLib.dll
Exception thrown: 'System.NotSupportedException' in System.Private.CoreLib.dll
Exception thrown: 'System.NotSupportedException' in System.Private.CoreLib.dll
Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor: Information: Executing ObjectResult, writing value of type 'System.String'.
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker: Information: Executed action JobAssist.Services.ResumeBankMgmt.API.Controllers.ResumeBankController.AddResumeAsync (JobAssist.Services.ResumeBankMgmt.API) in 7012.4078ms
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executed endpoint 'JobAssist.Services.ResumeBankMgmt.API.Controllers.ResumeBankController.AddResumeAsync (JobAssist.Services.ResumeBankMgmt.API)'
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished in 7155.7843ms 400 application/json; charset=utf-8
Также как еще один фрагмент головоломки:
Если в GetResumeBankAsyn c () i есть:
IQueryable<ResumeBank> query = ResumeBankContext.ResumeBanks;
//.Include(c => c.Resumes)
//.Include(d => d.ResumeCategories);
query = query.Where(c => c.Id == resumeBankID);
return await query.FirstOrDefaultAsync();
это работает.
Вот модели:
public class ResumeBank : Entity, IAggregateRoot
{
// JobSeeker ID
public int JobSeekerID { get; private set; }
// List of Resumes
private readonly List<Resume> _resumes;
public IEnumerable<Resume> Resumes => _resumes.AsReadOnly();
// List of Resume Bank
private readonly List<ResumeCategory> _resumeCategories;
public IEnumerable<ResumeCategory> ResumeCategories => _resumeCategories.AsReadOnly();
}
public class Resume : Entity
{
public string ResumeName { get; private set; }
public string FileLocation { get; private set; }
private readonly List<ResumeCategory> _categories;
public IEnumerable<ResumeCategory> ResumeCategories => _categories.AsReadOnly();
}
public class ResumeCategory : ValueObject
{
public string CategoryName { get; private set; }
}