System.NotSupportedException:无法在LINQ to Entities查询中构造实体或复杂类型“Project.Models.MyModel”

时间:2012-12-13 18:02:29

标签: asp.net-mvc-3 join model

是否可以将连接结果存储在模型中的两个/多个表中? 例如 说我有模特

public class model1{
  public string studentID {get; set;}
  public string Address [get; set;}
 }

public class model2{
  public int ID {get; set;}
  public string StudentName [get; set;}
}

public class model3{
   public string StudentName [get; set;} 
    public string Address [get; set;}
}

如果model1和model2从数据库中提取数据,我可以通过连接model1和model2的结果来创建model3吗?

修改

所以,我做了类似

的事情
model3object = dbcontext.Model3.AsQueryable();
        model3object = from m1 in dbcontext.model1
                  let id = dbcontext.Model1.Select(x => m1.studentId).Cast<int>().FirstOrDefault()
                  join m2 in dbcontext.model2
                  on  id equals m2.Id
                  select new Result
                  {
                      studentName = m2.studentName,
                      Address = m1.Adress,
                  };

但我收到了错误

System.NotSupportedException: The entity or complex type 'ProjectName.Models.Model3' cannot be constructed in a LINQ to Entities query.

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我会使用两种不同的模型。通过存储数据库中的值和用于在mvc中显示数据的视图模型使用的模型。

看看这个小例子:

var customerOrders = from o in myService.GetOrdersByCustomerId(id)
                     join p in myService.GetAllProducts() on o.ProductId equals p.Id
                     select new CustomerOrderViewModel
                     {
                         OrderId = o.Id,
                         ProductId = p.Id,
                         OrderDate = o.OrderDate,
                         ProductName = p.ProductName
                     };

您的代码对您的model1和model2执行相同的操作,并将这两个模型映射到一个视图模型。