получить дополнительное значение поля в таблице соединений ядра asp.net - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть таблицы, сопоставленные отношениям «многие ко многим», а в таблице соединений у меня есть дополнительное поле «Unit» (целое число), флажок (булево), поэтому любой из них поможет мне прочитать значение «Unit»..

Контроллер: -

 // GET: PatientFees/Edit/5
    public IActionResult Edit(int? id)
    {

       ServiceFeeViewModel SFVM = new ServiceFeeViewModel();
        var St = _context.PatientFees.Include(s => s.PatientService).ThenInclude(e => e.Services).AsNoTracking().SingleOrDefault(m => m.PatientID == id);
        var AllServices = _context.Services.Select(vm => new ServiceChecklistItems()
        {

            ServiceID = vm.ServiceID,
            Procedure = vm.Procedure,
            Amount = vm.Amount,
            Unit = ??,
            IsChecked = vm.PatientService.Any(x => x.PatientID == St.PatientID) ? true : false
        }).ToList();

        SFVM.PatientID = St.PatientID;
        SFVM.EstimateAmount = St.EstimateAmount;
        SFVM.Discount = St.Discount;
        SFVM.AmountToPay = St.AmountToPay;
        SFVM.AvailableServices = AllServices;

        return View(SFVM);
    }

ViewModel

 public class ServiceFeeViewModel{
    [Key ]       
    public int PatientID { get; set; }        
    public int EstimateAmount { get; set; }       
    public int Discount { get; set; }        
    public int AmountToPay { get; set; }

    public List<ServiceChecklistItems> AvailableServices { get; set; }
}

ChecklistItems: -

public class ServiceChecklistItems
{    
    [Key]
    public int ServiceID { get; set; }
    public string Procedure { get; set; }        
    public int Amount { get; set; }
    public int Unit { get; set; }
    public bool IsChecked { get; set; }
}

Три подключенных модели

public class PatientFees
{
    [Key]               
    public int PatientID { get; set; }        
    public int EstimateAmount { get; set; }       
    public int Discount { get; set; }        
    public int AmountToPay { get; set; }

    public Patient Patient { get; set; }
    public List<PatientService> PatientService { get; set; }

}

public class PatientService
{             

    public int PatientID { get; set; }
    public PatientFees  PatientFees   { get; set; }
    public int ServiceID { get; set; }
    public Services  Services { get; set; }   

    public int Unit { get; set; }

}

public class Services
{
    [Key]
    public int ServiceID { get; set; }
    public string Procedure { get; set; }        
    public int Amount { get; set; }        
    public DateTime   TimeFrame { get; set; }

    public List<PatientService> PatientService { get; set; }
}

Служба пациента - это объединяющая таблица, в которой есть дополнительное поле «Единица измерения», поэтому я хочу, чтобы при получении отмеченных элементов также читалась единица измерения.

1 Ответ

0 голосов
/ 12 декабря 2018

Решение из обсуждения:

var AllServices = _context.Services.Select(vm => new ServiceChecklistItems()
{

    ServiceID = vm.ServiceID,
    Procedure = vm.Procedure,
    Amount = vm.Amount,
    Unit = vm.PatientService.FirstOrDefault(x => x.PatientID == St.PatientID).Unit,
    IsChecked = vm.PatientService.Any(x => x.PatientID == St.PatientID) ? true : false
}).ToList();

также это

 Unit = vm.PatientService.Where(x => x.PatientID == St.PatientID)
                .Select(x => x.Unit)
                .FirstOrDefault(),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...