EntityFramework Codefirst Select 查询指定列

本笔记解决如下两个问题:

1、查询返回指定列。

2、查询指定列时报错如下:

The entity or complex type ‘DataBase.AccordionModels‘ cannot be constructed in a LINQ to Entities query.

一、环境中类定义如下:
DataBaseContext,

  public DataBaseContext()
            : base("default")
        {
        public DbSet<UserModels> UserContext { get; set; }
        public DbSet<PigModels> PigContext { get; set; }
        public DbSet<AccordionModels> AccordionContext { get; set; }
        public DbSet<HrefModels> HrefContext { get; set; }
         }

AccordionModels:

  public  class AccordionModels
    {
       [Required]
       [Key]
       public string ID { get; set; }
        [Required]
        [Display(Name = "名称")]
        public string title { get; set; }
        [Display(Name = "icon")]
        public string icon { get; set; }
        [Display(Name = "顺序号")]
        public int order { get; set; }

        public virtual ICollection<HrefModels> Hrefs { get; set; }
    }

HrefModels:

public class HrefModels
    {
       [Required]
       [Key]
       public string ID { get; set; }

        [Required]
        [Display(Name = "图标")]
        public string icon { get; set; }
        [Display(Name = "链接")]
        public string link { get; set; }
        [Display(Name = "名称")]
        public string title { get; set; }
        public int iFrame { get; set; }
        public virtual AccordionModels  Accordion { get; set; }       

    }

二、查询方法

(1)报错的查询方法:当采用如下写法查询时,会抛出异常 Message:The entity or complex type ‘DataBase.AccordionModels‘ cannot be constructed in a LINQ to Entities query.

 List<AccordionModels> accordions = new List<AccordionModels>();
                    accordions = context.AccordionContext.Select(a => new AccordionModels()
                    {
                        ID = a.ID,
                        title = a.title,
                        icon = a.icon
                    }).ToList();

可用如下两种方法:注意Select中的内容:1、新建一个实体类 AccordionView

 List<AccordionView> accordions = new List<AccordionView>();
                    accordions = context.AccordionContext.Select(a => new AccordionView()
                    {
                        ID = a.ID,
                        title = a.title,
                        icon = a.icon
                    }).ToList();

2、查询之后在转换

List<AccordionModels> AccordionModels = context.AccordionContext.Select(a => new
           {
           a.ID,
         a.title,
          a.icon

       }).ToList()
         .Select(b => new AccordionModels()
         {
         ID = b.icon,
         title = b.title,
        icon = b.icon
         }).ToList();
时间: 2024-08-12 23:45:24

EntityFramework Codefirst Select 查询指定列的相关文章

grails查询指定列

grails查询指定列,且以map的形式返回结果集,有两种方式: 1.select new map(id as id,name as name) from User 2.User.createCriteria().list{ projections{ property("id","aliasId") property("name","aliasName") }     setResultTransformer(Criteria

Dos.ORM Select查询 自定义列

自定义列 .Select( p = >new{ test = p.id}) // 同sql 列名 as 新列名 如下是 自己在写代码的例子,查询,分页,where条件,排序 var where = new Where<INCOM_TERMINALFAULT>(); where.And(a=>a.SA==1); where.And<X_CAR_DATABASE>((a, b) => b.CARNUMBERSID.Like("2")); DataT

SqlSugar 查询指定列 返回指定列 查特定的列节约资源加快速度

官方文档:http://www.codeisbug.com/Doc/8/1159 二: 返回指定列匿名类集合 var data = db.Queryable<Student>() .Select(f => new { f.ID, f.Name }).ToList(); /* 生成SQL: SELECT [ID] AS [ID] , [Name] AS [Name] FROM [Student] 其它数据库类似, 不一一列举 */ 13 1 二: 返回指定列匿名类集合 2 3 var da

MySQL之select查询、function函数

一.select查询 //查询某张表所有数据 select * from temp; //查询指定列和条件的数据 //查询name和age这两列,age等于22的数据 select name,age from temp where age = 22; //as对列重命名 //as可以省略不写,如果重命名的列名出现特殊字符,如单引号,那就需要用双引号引在外面 select name as '名称' from temp; //给table去别名 select t.name Name from tem

使用MapReduce查询Hbase表指定列簇的全部数据输入到HDFS(一)

package com.bank.service; import java.io.IOException; import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.conf.Configured;import org.apache.hadoop.fs.Path;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hba

sql查询指定表外键约束

//////////////////查询指定表外键约束select a.name as 约束名, object_name(b.parent_object_id) as 外键表, d.name as 外键列, object_name(b.referenced_object_id) as 主健表, c.name as 主键列 from sys.foreign_keys A inner join sys.foreign_key_columns B on A.object_id=b.constraint

转载《mysql 一》:mysql的select查询语句内在逻辑执行顺序

原文:http://www.jellythink.com/archives/924 我的抱怨 我一个搞应用开发的,非要会数据库,这不是专门的数据库开发人员干的事么?话说,小公司也没有数 据库开发人员这么个职位吧.好吧,对数据库最深的印象还停留在大学<数据库原理>这堂课上,什么第一范式,第二范式…,这些理论的东西,多多少少还是记得 点,至于更深层次的,我不会.所以呢,撸起袖子,开始学习吧. 干程序员,最不怕的就是学习,如果你连学习都怕了,那还是早点退出这行吧.你说是吧.而我今天这篇文章,既不总结

SQL select查询原理--查询语句执行原则&lt;转&gt;

1.单表查询:根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的):然后根据SELECT的选择列选择相应的列进行返回最终结果. 1)简单的单表查询 SELECT 字段 FROM 表名 WHERE 条件表达式 那它们是按什么顺序执行呢?分析器会先看语句的第一个词,当它发现第一个词是SELECT关键字的时候,它会跳到FROM关键字,然后通过FROM关键字找到表名并把表装入内存.接着是找WHERE关键字,如果找不到则返回到SELECT找字段解析,如果找到WHERE,则分析其中的条

mysqli_stmt类:使用预处理语句处理SELECT查询结果

SELECT语句和其他的SQL查询命令不同,它需要处理查询结果.SQL语句的执行也需要使用mysqli_stmt对象中的execute()方法,但与mysqli对象中的query()方法不同,execute()方法的返回值并不是一个mysqli_result对象.mysqli_stmt对象提供了一种更为精巧的办法来处理SELECT语句查询结果:在使用execute()方法执行SQL语句完成查询之后,使用mysqli_stmt对象中的bind_result()方法,把查询结果的各个数据列绑定到一些