我试图通过以下代码显示要查看的员工列表。我有tblemployee
课程和tblDept
课程。
EmployeeViewModel EmployeeVM = new EmployeeViewModel();
MvcEmployeeEntities db = new MvcEmployeeEntities();
List<TblEmployee> emplist = db.TblEmployees.ToList();
List<EmployeeViewModel> EmpVMlist = emplist.Select(
x => new EmployeeViewModel {
Emp_ID = x.Emp_ID,
Emp_Name = x.Emp_Name,
Emp_Number = x.Emp_Number,
DeptID = x.DeptID,
**DeptName = x.tblDept.DeptName** }).ToList();
Return(EmpVMlist);
此时deptName显示错误,表示字符串无法隐式转换为 NamespaceModel 类。
他们是否有办法隐式转换它?
注意我有一个Public virtual tblDept deptName {get;set;}
,因为它来自tbldept
。class
public class EmployeeViewModel
{
public int Emp_ID { get; set; }
public string Emp_Name { get; set; }
public Nullable<int> Emp_Number { get; set; }
public Nullable<int> DeptID { get; set; }
//virtual to use an other tble with in this tble, to get set there tblValues
public virtual tblDept DeptName { get; set; }
}
答案 0 :(得分:0)
错误是自解释的。您的LINQ x.tblDept.DeptName
表达式中的Select
将读取您DeptName
记录的关联Department
的{{1}}属性值正在阅读,但您正在尝试将属性值设置为类型为Employee
的{{1}}属性!所以基本上你试图将苹果类型分配给橙色!
理想情况下,您的视图模型不应使用您的实体类。 查看模型是特定于视图的模型。保持简单和精益。大多数情况下,简单 - 瘦 - 平视图模型是您所需要的。
因此,请将视图模型中的DeptName属性更改为字符串。
DeptName
在视图模型中仅保留视图中绝对需要的属性。无需复制整个实体类结构。