如何在 asp .net MVC 5 中将对象结果模型转换为自定义视图模型
How to Convert object result model to a custom view model in asp .net MVC 5
我已经完成了一个项目,使用存储过程显示使用 entity framework 的连接 table 值。
我已经完成了所有基本程序,并且在从我的模型中调用它时它成功地 return 对象结果,
现在我的问题是我无法将该结果模型从复杂 return 类型的存储过程转换为我的视图模型。
谁能帮我解决一下。
我在下面附上了我的项目工作,
这是 ADO .net 实体模型自动生成的上下文
模型浏览器功能导入中的编辑功能
显示自动生成的结果。
这就是我想要做的
这就是我遇到的错误
这就是我的视图模型的组成方式
存储过程查询(Mysql)
正如 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
对象是 un-necessary(除非你想对其进行一些其他过滤) :
listEmployeeList = // the above code with .ToList();
我已经完成了一个项目,使用存储过程显示使用 entity framework 的连接 table 值。 我已经完成了所有基本程序,并且在从我的模型中调用它时它成功地 return 对象结果,
现在我的问题是我无法将该结果模型从复杂 return 类型的存储过程转换为我的视图模型。 谁能帮我解决一下。
我在下面附上了我的项目工作,
这是 ADO .net 实体模型自动生成的上下文
模型浏览器功能导入中的编辑功能
显示自动生成的结果。
这就是我想要做的
这就是我遇到的错误
这就是我的视图模型的组成方式
存储过程查询(Mysql)
正如 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
对象是 un-necessary(除非你想对其进行一些其他过滤) :
listEmployeeList = // the above code with .ToList();