Я выполнил проект использования хранимой процедуры для отображения значений таблицы соединений с использованием структуры сущностей. Я выполнил всю основную процедуру, и при вызове ее из моей модели она успешно возвращает результат объекта,
Теперь моя проблема в том, что я не могу преобразовать эту модель результата из хранимой процедуры, которая имеет сложный возвращаемый тип, в мою модель представления. Может ли кто-нибудь помочь мне в ее решении.
Я приложил свои работы по проекту ниже,
Это автоматически сгенерированный контекст моделью ADO .net Entity.
Функция редактирования в импорте функций браузера модели
Показать результат, который генерируется автоматически.
Это то, что я пытаюсь сделать
И это ошибка, которую я получаю
Вот как моя модель представления состоит из
Запрос хранимой процедуры (Mysql)
@vikscool, не могли бы вы показать мне пример для добавления местоположения свойств сопоставления, у меня есть имя и отдел в таблице сотрудников, а также адрес и мобильный телефон в сведениях о сотруднике?





Как упоминалось в комментарии OP, схема employee и employee_details выглядит примерно так:
public class employee
{
public string Name {get;set;}
public string Department {get;set;}
}
public class employee_details
{
public string Address {get;set;}
public string Mobile {get;set;}
}
Итак, после применения сопоставления ваш код будет выглядеть примерно так:
var query = objEmployee.sp_display().Select(s=> new ViewModel{
employees = new employee{
Name = s.Name //change the s.Name to the property name coming from your SP(if different)
Department = s.Department
},
employee_detail = new employee_detail{
Address = s.Address,
Mobile = s.Mobile
}}).ToList()
Или лучше просто удалить объект query и использовать listEmployeeList, поскольку сам этот список также ссылается на ViewModel, поэтому объект query не нужен (если вы не хотите делать на нем какую-то другую фильтрацию):
listEmployeeList = // the above code with .ToList();
Как показано выше на третьем изображении, свойства не записаны, если хранимая процедура возвращает значение. Поскольку он генерируется автоматически, любые будущие изменения будут перезаписаны, если мы определим свойства вручную, хотя я определил его вручную, назначив номер списка индексов «listEmployeeList», но он не хранит никакого значения, он просто отображает нулевое значение . Я пропустил какое-либо сопоставление во время создания модели?
Он будет отображать ноль, поскольку у вас нет свойств, определенных в классе sp_display_result. Если столбцы могут измениться из Procedure, то класс ViewModel также должен измениться. Итак, лучше предоставить свойства сопоставления в классе sp_display_result. В противном случае используйте DataTable для сбора данных, а затем преобразуйте их в json и передайте клиенту/дескриптору в бизнес-логах для поддержки сопоставления.
Поскольку в процедуре нет входного параметра, как сопоставить с помощью sp_display_result? Есть ли способ сопоставить.
вы должны предоставить сопоставление для вашего
ViewModelв.Select()как:var query = objEmployee.sp_display().Select(s=>new ViewModel{employees=new employee{//add the mapping properties here},employee_detail = new employee_detail{//add the mapping properties here}}).ToList().