Я трачу весь день на исправление этой ошибки, но ничего не произошло.Я использую Entity Framework 6 с .NET Core 2.2.
У меня есть Driver
класс, который имеет список из множества DailyRoute
:
public class Driver
{
[Key]
public Guid DriverId { get; protected set; }
public Vehicle Vehicle { get; protected set; }
private ISet<DailyRoute> _dailyRoutes = new HashSet<DailyRoute>();
public virtual ICollection<DailyRoute> DailyRoutes
{
get => _dailyRoutes;
set => _dailyRoutes = new HashSet<DailyRoute>(value);
}
public DateTime UpdatedAt { get; private set; }
protected Driver()
{
}
public Driver (Guid userid)
{
DriverId = userid;
}
}
Это класс DailyRoute
:
public class DailyRoute
{
public Guid Id { get; set; }
public DateTime DateTime { get; protected set; }
private ISet<PassengerNode> _passengerNodes = new HashSet<PassengerNode>();
public Route Route { get; protected set; }
public Driver Driver { get; set; }
public ICollection<PassengerNode> PassengerNodes => _passengerNodes;
public DailyRoute()
{
}
protected DailyRoute(DateTime dateTime, Route route, Guid id)
{
Id = id;
Route = route;
DateTime = dateTime;
}
}
Проблема в том, что я отлаживаю программу, и когда я обновляю пользователя и затем показываю фактический элемент dbcontext
, был драйвер со списком dailyRoute, но при следующем запросе, когда я пытаюсь показать все драйверы, яполучил водителя с пустым ежедневным списком маршрутов.В базе данных у меня есть таблица с dailyRoute с идентификатором драйвера, и этот идентификатор существует в таблице Driver
.
Класс dbContext
:
public class PassengerContext : DbContext
{
public PassengerContext(DbContextOptions<PassengerContext> options): base(options)
{
}
public DbSet<User> Users { get; set; }
public DbSet<Driver> Drivers { get; set; }
public DbSet<RefreshToken> RefreshTokens { get; set; }
public DbSet<DailyRoute> DailyRoutes { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Driver>()
.HasMany(e => e.DailyRoutes).WithOne(k => k.Driver).IsRequired();
}
}
Это класскогда я пытаюсь получить драйвер, драйвер существует, но список dailyRoute пуст;
public class DriverRepository : IDriverRepository
{
private readonly PassengerContext _passengerContext;
public DriverRepository(PassengerContext passengerContext)
{
_passengerContext = passengerContext;
}
public async Task<Driver> GetAsync(Guid userId)
{
return await _passengerContext.Drivers.SingleOrDefaultAsync(x => x.DriverId == userId);
}
Driver
таблица:
DailyRoute
таблица: