当前位置:编程学习 > C#/ASP.NET >>

LINQ to Entities 查询中无法构造实体或复杂类型

初学asp.net 代码出现LINQ to Entities 查询中无法构造实体或复杂类型提示,看了论坛里已有的类似问题,好像是说类型太多,但我这里非常简单,不知道为什么也出这个问题,求解!谢谢!
        public IList<School> All()
        {
            var query = from c in OD.Schools
                     select new School
                     {
                         ID = c.ID,
                         FName = c.FName,
                         SName = c.SName
                     };

            return query.ToList();
        }
ToList直接跟在linq里也出同样的错.同cs下的其他不select nwe school的就没事.如下
        
    public IList<School> GetSchoolByBelongTo(int belongTo)
        {
            var query = from c in OD.Schools 
                        where c.BelongTo == belongTo
                        select c;


            return query.ToList();
        } --------------------编程问答-------------------- 在 LINQ to Entities 查询中无法构造实体或复杂类型“OeicDmp.Models.School" --------------------编程问答-------------------- 重新定义一个Model类,名字叫MSchool
不要使用映射的实体作为返回值类型

public class MSchool
{

 ..//字段
}


public IList<MSchool> All()
  {
  var query = from c in OD.Schools
  select new MSchool
  {
  ID = c.ID,
  FName = c.FName,
  SName = c.SName
  };

  return query.ToList();
  }
--------------------编程问答-------------------- 请问Mschool定义在哪里,如何定义?
School是在OeicDmp.Models项目下,Mschool是否也可以同一位置.还有定义方法,初学,见谅!


namespace OeicDmp.Models
{

        //学校对象
    public class School
    {
        
        [ScaffoldColumn(false)]
        public int ID { get; set; }
        [DisplayName("上级部门")]
        [ScaffoldColumn(false)]
        public int BelongTo { get; set; }
        [DisplayName("学校全称")]
        public string FName { get; set; }
        [DisplayName("学校简称")]
        public string SName { get; set; }



        public virtual ICollection<User> Users { get; set; }

    }
}
--------------------编程问答-------------------- 我的public IList<School> All()是在SchoolService.cs里,在SchoolManager.cs里还有一个
SchoolService ls = new SchoolService();
        public IList<School> All()
        {
            return ls.All();
        }

控制器先是调用SchoolManager的,学别人的框架写的,也不懂有什么用(估计安全点)
是否在SchoolManager里也要改成MSchool --------------------编程问答-------------------- 查询 部分字段,你可以试着 分几步

public IList<School> All()
{
  var query = from c in OD.Schools
              select new     //先匿名
              {
                ID = c.ID,
                FName = c.FName,
                SName = c.SName
              };

  return query.ToList()   //toList,先查询出部分字段,再转换
              .Select(c=>new School{  
                          ID = c.ID,
                          FName = c.FName,
                          SName = c.SName
                         });   
}
--------------------编程问答-------------------- 直接这么写?Tolist().Select不行啊,红线的 --------------------编程问答-------------------- data.ToList().Select(s => new stu { id = s.id, sname = s.sname }).ToList(); --------------------编程问答--------------------
引用 7 楼 niuxia127 的回复:
data.ToList().Select(s => new stu { id = s.id, sname = s.sname }).ToList();


你这是要搞死人家啊? --------------------编程问答-------------------- 这个问题还真是有点。。。。。 --------------------编程问答-------------------- 可不可以贴出School实体类来呢。。。 --------------------编程问答-------------------- 下午ef6源码,我测试已经通过
在文件ExpressionConverter的
private void CheckInitializerType(Type type)

 if (BuiltInTypeKind.EntityType == typeKind
                    ||
                    BuiltInTypeKind.ComplexType == typeKind)
改成
if (BuiltInTypeKind.ComplexType == typeKind) --------------------编程问答--------------------
引用 3 楼 qpalzmn001 的回复:
请问Mschool定义在哪里,如何定义?
School是在OeicDmp.Models项目下,Mschool是否也可以同一位置.还有定义方法,初学,见谅!


namespace OeicDmp.Models
{

        //学校对象
    public class School
    {
        
        [ScaffoldColumn(false)]
        public int ID { get; set; }
        [DisplayName("上级部门")]
        [ScaffoldColumn(false)]
        public int BelongTo { get; set; }
        [DisplayName("学校全称")]
        public string FName { get; set; }
        [DisplayName("学校简称")]
        public string SName { get; set; }



        public virtual ICollection<User> Users { get; set; }

    }
}

可以在同一位置定义 --------------------编程问答-------------------- 估计是木有数据的问题
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,