Eager Loading with Nullable nested dependents
mehmood tekfirst
771
Reputation points
Hi , I am trying to load the dependent objects under franchise object.
Here is my code.
Franchise? franchiseRp = await _dbContext.Franchise
.Include( c=> c.Contact)
.ThenInclude(cn => cn.ContactNumbers)
.Include(c => c.Contact)
.ThenInclude(ca => ca.Contacts_Addresses)
.Include(c => c.Contact)
.ThenInclude(emailA => emailA.EmailAddresses)
.Include(c => c.Contact)
.ThenInclude( cad => cad.Contacts_Addresses)
.Include(ft => ft.FranchiseThresholds)
.ThenInclude(fee => fee.FeeThreshold)
.Include(fvcr => fvcr!.Franchise_VCRates)
.AsNoTracking()
.FirstOrDefaultAsync(f => f.Id == id);
and I am getting this warning .
These dependent entities are nullable entitiy
and the error is as follow
Severity Code Description Project File Line Suppression State
Warning CS8620 Argument of type 'IIncludableQueryable<Franchise, ICollection<FranchiseThreshold>?>' cannot be used for parameter 'source' of type 'IIncludableQueryable<Franchise, IEnumerable<FranchiseThreshold>>' in 'IIncludableQueryable<Franchise, FeeThreshold?> EntityFrameworkQueryableExtensions.ThenInclude<Franchise, FranchiseThreshold, FeeThreshold?>(IIncludableQueryable<Franchise, IEnumerable<FranchiseThreshold>> source, Expression<Func<FranchiseThreshold, FeeThreshold?>> navigationPropertyPath)' due to differences in the nullability of reference types. CarRentalWidget.BLL D:\Code\R1\RentalWidget.BLL\DAL\FranchiseRespository.cs 415 Active
and this is the franchise entity.
public class Franchise
{
[Key]
public int Id { get; set; }
public string? Name { get; set; }
public string? TradingName { get; set; }
public Nullable<int> FranchiseGroup_Id { get; set; }
public bool Primary { get; set; }
public string? SystemId { get; set; }
public string? AccountCode { get; set; }
public Nullable<bool> WebDomain { get; set; }
public Nullable<bool> ParticipateOnWeb { get; set; }
public string? VATNumber { get; set; }
public Nullable<short> FleetExceptionPeriod { get; set; }
public Nullable<int> CreatedBy { get; set; }
public Nullable<System.DateTime> CreatedOn { get; set; }
public Nullable<int> ModifiedBy { get; set; }
public Nullable<System.DateTime> ModifiedOn { get; set; }
public byte Status_Id { get; set; }
public double Longitude { get; set; }
public double Latitude { get; set; }
public bool IsPracticalInsured { get; set; }
public Nullable<int> VATRate_Id { get; set; }
public Nullable<int> IPTRate_Id { get; set; }
public Nullable<bool> IsFeeTypeFixed { get; set; }
public Nullable<byte> StepCompleted { get; set; }
public Nullable<int> Contact_Id { get; set; }
public string? CompanyRegNumber { get; set; }
public string? Code { get; set; }
public string? ServiceKey { get; set; }
public bool AutoApproveFleet { get; set; }
public Nullable<short> WebDomainSavingMode { get; set; }
public Nullable<double> OnlineBookingDiscount { get; set; }
public Nullable<bool> InsFeeType { get; set; }
public Nullable<decimal> InsuranceFeePer { get; set; }
public Nullable<decimal> InsCoiRate { get; set; }
public Nullable<decimal> InsuranceMonthlyPrem { get; set; }
public Nullable<int> InsMinimumFleetSize { get; set; }
public Nullable<decimal> FixedInsuranceFee { get; set; }
public Nullable<decimal> DailyAmountPVThoseEffect { get; set; }
public Nullable<System.DateTime> InsuranceHmEndDate { get; set; }
public string? ClientKey { get; set; }
public string? FranchiseEmail { get; set; }
public Nullable<bool> IsFirstMidSubmitted { get; set; }
public string? CreatedByName { get; set; }
public string? ModifiedByName { get; set; }
public Nullable<bool> IsMobileAppEnable { get; set; }
public string? AccountName { get; set; }
public string? AccountNo { get; set; }
public string? SortCode { get; set; }
public string? GeneralTextField { get; set; }
public virtual ICollection<BKPayment>? BKPayments { get; set; }
public virtual ICollection<BKRenter>? BKRenters { get; set; }
public virtual ICollection<BookingAgreement>? BookingAgreements { get; set; }
public virtual ICollection<BreakdownProvider>? BreakdownProviders { get; set; }
public virtual ICollection<BufferTime>? BufferTimes { get; set; }
[ForeignKey("Contact_Id")]
public virtual Contact? Contact { get; set; }
public virtual ICollection<Enquiry>? Enquiries { get; set; }
public virtual ICollection<Fleet>? Fleets { get; set; }
public virtual ICollection<Franchise_BankHolidays>? Franchise_BankHolidays { get; set; }
public virtual ICollection<Franchise_LinkedContacts>? Franchise_LinkedContacts { get; set; }
public virtual ICollection<Franchise_DefaultInsurers>? Franchise_DefaultInsurers { get; set; }
public virtual ICollection<Franchise_DepositRule>? Franchise_DepositRule { get; set; }
[ForeignKey("FranchiseGroup_Id")]
public virtual FranchiseGroup? FranchiseGroup { get; set; }
public virtual ICollection<Franchise_OpeningHours>? Franchise_OpeningHours { get; set; }
public virtual ICollection<Franchise_RentalRules>? Franchise_RentalRules { get; set; }
public virtual ICollection<Franchise_SubOffices>? Franchise_SubOffices { get; set; }
public virtual ICollection<Franchise_VCRates>? Franchise_VCRates { get; set; }
public virtual ICollection<FranchiseDisclaimatory>? FranchiseDisclaimatories { get; set; }
public virtual ICollection<FranchiseThreshold>? FranchiseThresholds { get; set; }
public virtual ICollection<GhostVehicle>? GhostVehicles { get; set; }
public virtual ICollection<Franchise_InsurerProviders>? Franchise_InsurerProviders { get; set; }
public virtual ICollection<Season>? Seasons { get; set; }
public virtual ICollection<SpecialRate>? SpecialRates { get; set; }
public virtual ICollection<TermsAndCondition>? TermsAndConditions { get; set; }
public virtual ICollection<User>? Users { get; set; }
public virtual ICollection<StoreAppUser>? StoreAppUsers { get; set; }
public virtual ICollection<AgreementRenter>? AgreementRenters { get; set; }
}
Should I mention foreign key for each relation ?
Sign in to answer