Как получить одиночную запись по идентификатору при использовании Include () - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь создать вызов базы данных linq, чтобы получить кучу информации.У пользователя может быть список ApplicationForms и ApplicationLogic

Из View я передаю значения маршрута для MemberID и ApplicationID.

Из linq я хочу получить единую ApplicationForm и одиночнуюApplicationLogic на основе переданного ApplicationID.

   public async Task<Members> GetApplicationDetails(int MemberID, int ApplicationID)
    {
        var GetApplication = await _dbContext.Members
                                    .Include(x => x.Members_PersonalInformation)
                                    .Include(x => x.Members_BankRefundDetails)
                                    .Include(x => x.Members_ResidentialAddress)
                                    .Include(x => x.ApplicationForms)  //I want to get the application by ApplicationID
                                    .Include(x => x.ApplicationLogic)  //I want to get the logic by ApplicationID
                                    .Where(x => x.ID == MemberID)
                                    .SingleOrDefaultAsync();
        return GetApplication;
    }

Модель моих членов

  public virtual ICollection<ApplicationForms> ApplicationForms { get; set; }
    public virtual ICollection<ApplicationLogic> ApplicationLogic { get; set; }
    public virtual ICollection<Members_PersonalInformation> Members_PersonalInformation { get; set; }
    public virtual ICollection<Members_BankRefundDetails> Members_BankRefundDetails { get; set; }
    public virtual ICollection<Members_ResidentialAddress> Members_ResidentialAddress { get; set; }

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

После изменения типа свойств @ ShaneRay

 public async Task<Members> GetApplicationDetails(int MemberID, int ApplicationID)
    {
        var GetApplication = await _dbContext.Members
                                   .Include(x => x.Members_PersonalInformation)
                                   .Include(x => x.Members_BankRefundDetails)
                                   .Include(x => x.Members_ResidentialAddress)
                                   .Include(x => x.ApplicationFormsSingle).Where(x => x.ApplicationFormsSingle.ID == ApplicationID)
                                   .Include(x => x.ApplicationLogicSingle).Where(x => x.ApplicationLogicSingle.ApplicationFormsID == ApplicationID)
                                   .SingleOrDefaultAsync(f => f.ID == MemberID);

        return GetApplication;
    }
0 голосов
/ 22 марта 2019

Обновите типы свойств вашего элемента, чтобы они были T, а не ICollection.

public virtual ApplicationForms ApplicationForms { get; set; }
public virtual ApplicationLogic ApplicationLogic { get; set; }
public virtual ICollection< Members_PersonalInformation> Members_PersonalInformation { get; set; }
public virtual ICollection<Members_BankRefundDetails> Members_BankRefundDetails { get; set; }
public virtual ICollection<Members_ResidentialAddress> Members_ResidentialAddress { get; set; }
...