使用实体框架从数据库获取行到列表

时间:2018-10-24 13:11:17

标签: c# entity-framework linq

我有这个复杂的模型:

public class complexModel
{
    public aTable aObject { get; set; }
    public List<bTable> bObjectList { get; set; }
    public List<cTable> cObjectList { get; set; }
}

然后在控制器中,我声明此对象:

var AAA = new complexModel();

现在此代码可以正常工作

AAA.bObjectList= (from tdrc in db.bTable
                  select new bTable
                             {
                                ID = tdrc.ID ,
                                bName = tdrc.bName,,
                             }).ToList();

但是当我写这篇文章

AAA.cObjectList= (from tdrc in db.cTable
                  where tdrc.cID == id
                  select new cTable
                             {
                                 cID = tdrc.cID,
                                 cName = tdrc.cName,
                             }).ToList();

我收到此错误:

  

System.NotSupportedException:'无法在LINQ to Entities查询中构造实体或复杂类型'Project.DAC.cTable'。'

1 个答案:

答案 0 :(得分:0)

Hello

您不能AAA.cObjectList= (from tdrc in db.cTable // ^ where tdrc.cID == id select new cTable // ^ { cID = tdrc.cID, cName = tdrc.cName, }).ToList(); 的SomeType是实体类型。那是在上下文中声明的类型/类。

应该使用匿名类型

select new SomeType

或者如果您想要实体类型:

AAA.cObjectList= (from tdrc in db.cTable
              where tdrc.cID == id
              select new 
                         {
                             cID = tdrc.cID,
                             cName = tdrc.cName,
                         }).ToList();

或使用非实体类型。