2017-12-15 12 views
0

APIアプリケーションをASP.Net Core 2.0およびEF Coreに合わせて更新しました。コア2.0への更新後にLinqクエリで列sqlExceptionが無効になる

前に、正常に動作するために使用次のクエリ:私は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,         
            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; }  
    } 

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

またはスキップ

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

私は私の移動後に、このようなエラーが出ますなぜあなたは、任意のアドバイスを持っているでしょう...それが正常に動作しますが、私は私のRecordNameフィールドを必要とスキップと命じましたコア2.0へ? LINQクエリは完全に罰金のようです

シルヴァン

+0

元のクエリのGroupByはどこにありますか?それとも、OrderByを削除したのですか? – NullReference

+0

なぜですか?通常は回帰バグと呼ばれます。このような何かを得るたびに、issue trackerでチェック/投稿してください。 –

+0

ありがとうございます、私はGithuibのEFCoreチームをチェックしました。次の2.1.0バージョンで解決すべき既知の問題です。https://github.com/aspnet/EntityFrameworkCore/issues/10570 – sylvain77

答えて

0

あなたはあなたのテーブルのフィールドmyName最初にOrderByを使用してみて、その後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(); 

この方法が有効かどうかを確認してください。

+0

ありがとう私もこのオプションを試しましたが、まったく同じ問題が発生しました – sylvain77

関連する問題