как я могу преобразовать модель в сущность? - PullRequest
0 голосов
/ 18 октября 2018

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

[HttpPost]
public ActionResult Create(Patient Patient)
{
    _context.Patients.Add(Patient); "(Error here)"
    try
    {
        _context.SaveChanges();
    }
    catch (DbEntityValidationException ex)
    {
        foreach (var entityValidationErrors in ex.EntityValidationErrors)
        {
            foreach (var validationError in entityValidationErrors.ValidationErrors)
            {
                Response.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
            }
        }
    }

    return RedirectToAction("Index", "Patients");
}

}

Ошибка: невозможно преобразовать из «CandidateScreening.Models.Patient» в «CandidateScreening.Data.Entities.Patient»

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вы также можете использовать Automapper .Вот пример:

CandidateScreening.Data.Entities.Patient patient = Mapper.Map<CandidateScreening.Data.Entities.Patient>(patientVm);//where patientVm has type CandidateScreening.Models.Patient
0 голосов
/ 18 октября 2018

У вас есть 2 разных класса для модели представления и модели данных, конечно, оба они не могут неявно преобразовываться друг в друга.Самый простой способ включить преобразование - использовать неявный оператор (или явный оператор , в зависимости от контекста) для преобразования между моделью представления и моделью данных, см. Этот пример ниже:

public static implicit operator Patient(PatientVM patient)
{
    return new Patient
    {
        // list of properties
        // example:
        // PatientId = patient.PatientId
    };
}

Затем назначьте содержимое модели представления внутри модели данных в методе действия POST, как указано ниже:

[HttpPost]
public ActionResult Create(PatientVM patient)
{
    Patient patientData = patient;

    _context.Patients.Add(patientData);

    // other stuff

    return RedirectToAction("Index", "Patients");
}

Примечание: Имя класса модели представления намеренно изменилось в примере, чтобы различать модель данных икласс модели представления.

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