как назначить данные из ef-запроса для модели представления - PullRequest
0 голосов
/ 23 марта 2019

Я пишу API запроса на получение, хочу получить записи из базы данных, а затем назначить выбранные поля в модели представления. Пожалуйста, покажите мне, как создать запрос и присвоить значение модели, используя проекцию

Я создал постоянную модель, которая обладает свойством nevigation для всей своей дочерней сущности. используя dbcontext, мне удалось получить данные в переменную, однако, когда они присваиваются модели, возникает ошибка. Также, пожалуйста, покажите мне, как получить сумму для всех сотрудников за каждую ставку типа пособия

Код обработчика

 try
            {
                var predicate = PredicateBuilder.True<PreRevisionRegularEmployee>();
                var model = new PayBillListView();
                int SectionId = request.SectionId;
                PayBillViewModel payBillViewModel = new PayBillViewModel();
                DateTime paydate = string.IsNullOrEmpty(request.Date) ? DateTime.Now : Convert.ToDateTime(request.Date);
                predicate = predicate.And(x => x.BasicDetail.SectionId == SectionId);


                IList<PayBillViewModel> payBill = await _context.PreRevisionRegularEmployees.Where(predicate)

                                               .Select(c => new PayBillViewModel
                                               {
                                                   PreRevisionRegularEmployeeId = c.PreRevisionRegularEmployeeId,
                                                   CPFNumber = c.CPFNumber,
                                                   GPFNumber = c.GPFNumber,
                                                   percentageAllowanceTypeName = c.PreRevisionRegularEmployeePercentageAllowanceTypes.Select(pa => pa.PercentageAllowanceType.Name),
                                                   PercentageAllowanceRate =(IEnumerable<PercentageAllowance>) c.PreRevisionRegularEmployeePercentageAllowanceTypes.Select(par => par.PercentageAllowanceType.PercentageAllowances.Select(p=>p.Rate)),
                                                   Probation = c.BasicDetail.Probation


                                                })

                                                          .ToListAsync();
                model.payBillViewModels = _mapper.Map <IList<PayBillViewModel>>(payBill);




                return model;

            }
            catch (Exception)
            {

                throw;
            }

главный объект

 public class PreRevisionRegularEmployee: BaseEntity
    {
        public int PreRevisionRegularEmployeeId { get; set; }
        //public DateTime CreatedAt { get; set; }
        //public string CreatedBy { get; set; }
        //public DateTime ModifiedAt { get; set; }
        //public string ModifiedBy { get; set; }

        public string GPFNumber { get; set; }
        public string CPFNumber { get; set; }
        public string GospedCode { get; set; } // 14-digit code

        public string EmployeeCode
        {
            get
            {
                return string.IsNullOrEmpty(GPFNumber) ? 
                    (string.IsNullOrEmpty(CPFNumber) ? GospedCode : CPFNumber) : GPFNumber;
            }
        }
        public int EmployeeClass { get; set; }
        public bool GovernmentAccomodation { get; set; }
        public string AccomodationClass { get; set; }
        public bool VehicleAttached { get; set; }
        public BasicDetail BasicDetail { get; set; }
        public AppointmentOrder AppointmentOrder { get; set; }
        public ICollection<PreRevisionRegularEmployeePercentageAllowanceType> PreRevisionRegularEmployeePercentageAllowanceTypes { get; set; }


 public class PreRevisionRegularEmployeePercentageAllowanceType
    {
        public int PreRevisionRegularEmployeeId { get; set; }
        public PreRevisionRegularEmployee PreRevisionRegularEmployee { get; set; }
        public int PercentageAllowanceTypeId { get; set; }
        public PercentageAllowanceType PercentageAllowanceType { get; set; }
    }
 public class PercentageAllowanceType : BaseLookup
    {
        public int PercentageAllowanceTypeId { get; set; }
        public ICollection<PercentageAllowance> PercentageAllowances { get; set; }
        public ICollection<PreRevisionRegularEmployeePercentageAllowanceType> PreRevisionRegularEmployeePercentageAllowanceTypes { get; set; }
    }
 public class PercentageAllowance : BaseEntity
    {
        public int PercentageAllowanceId { get; set; }
        public int RevisedPayRevision { get; set; }
        public DateTime EffectiveDateFrom { get; set; }
        public float Rate { get; set; }
        public int PercentageAllowanceTypeId { get; set; }
        public PercentageAllowanceType PercentageAllowanceType { get; set; }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...