更新到Core 2.0后,Linq查询中的列sqlException无效

时间:2017-12-15 02:23:25

标签: linq asp.net-core-2.0 ef-core-2.0

我刚刚将我的API应用程序更新为ASP.Net Core 2.0以及EF Core。

以下查询以前的工作正常:

IList<myDTO> allRecords = _context.myModel                               
                                .Select(item => new myDTO()
                                {
                                   recordId = item.myId,                                   
                                    recordName = item.myName                                  
                                })
                                .OrderBy(o=>o.recordName)                                
                                .Skip(limit * (page - 1))
                                .Take(limit)
                                .ToList();

public class myModel
    {       
        [Key]       
        public int myId { get; set; }       
        public string myName { get; set; }       
    }

public class myDTO
    {      
        public int recordId { get; set; }      
        public string recordName { get; set; }      
    }

更新后我总是得到一个

System.Data.SqlClient.SqlException: 'Invalid column name 'recordName '.'

如果我删除了GrouBy

IList<myDTO> allRecords = _context.myModel                               
                                .Select(item => new myDTO()
                                {
                                   recordId = item.myId,                                   
                                    recordName = item.myName                                  
                                })                                                             
                                .Skip(limit * (page - 1))
                                .Take(limit)
                                .ToList();

或recordName字段

 IList<myDTO> allRecords = _context.myModel                               
                                .Select(item => new myDTO()
                                {
                                   recordId = item.myId            
                                })
                                .OrderBy(o=>o.recordName)                                
                                .Skip(limit * (page - 1))
                                .Take(limit)
                                .ToList();

或Skip

IList<myDTO> allRecords = _context.myModel                               
                                    .Select(item => new myDTO()
                                    {
                                       recordId = item.myId,                                   
                                        recordName = item.myName                                  
                                    })
                                    .OrderBy(o=>o.recordName)
                                    .Take(limit)
                                    .ToList();

,它工作正常但我需要我的recordName字段并跳过并订购......

在迁移到Core 2.0之后,您是否有任何关于我为何会遇到此类错误的建议? Linq查询似乎完全没问题

西尔

1 个答案:

答案 0 :(得分:0)

您可以首先在表格字段OrderBy上使用myName,然后执行select

IList<myDTO> allRecords = _context.myModel   
                                .OrderBy(o => o.myName)                              
                                .Select(item => new myDTO()
                                {
                                    recordId = item.myId,                                   
                                    recordName = item.myName                                  
                                })                                                              
                                .Skip(limit * (page - 1))
                                .Take(limit)
                                .ToList();

检查这种方法是否有效。