2017-02-07 8 views
0

私のモデルでは、他のモデルの組み合わせであるプロパティがあります。データベースに存在しない列のEntity Frameworkソート

 public string PiramideId => (string.IsNullOrWhiteSpace(GEMEENTECODE) ? "" : GEMEENTECODE.Trim()) + "-" + (string.IsNullOrWhiteSpace(WIJKCODE) ? "" : WIJKCODE.Trim()) + "-" + (string.IsNullOrWhiteSpace(GROEPCODE) ? "" : GROEPCODE.Trim()) + "-" + (string.IsNullOrWhiteSpace(STRAATCODE) ? "" : STRAATCODE.Trim()) + "-" + (string.IsNullOrWhiteSpace(GEBOUWCODE) ? "" : GEBOUWCODE.Trim()) + "-" + (string.IsNullOrWhiteSpace(HUISNR) ? "" : HUISNR.Trim()); 

私はPiramideId EFをソートしようとしたとき、私はEntity Frameworkの中に呼び出しを行うカラムがデータベースに存在しないというエラーを返します。 PiramideIdという列は、基本的にいくつかの種類が結合されているとEFに伝える方法はありますか?

私はすべての項目のリストを取得した後にソート試みたが、それが作品にもかかわらず、私は唯一のトップ30

例をしたいしながら、私は自分のDB内のすべてのレコードを取得する必要がありますので、それは、私が欲しいものではありませんクエリの:

PagedView.Context.PERSOON.Join(PagedView.Context.VERHURINGEN, persoon => persoon.ComputerNr, 
         verhuring => verhuring.PersoonsID, (persoon, verhuring) => new {persoon, verhuring}) 
        .Join(PagedView.Context.EENHEID, @t => @t.verhuring.Eenheid, eenheid => eenheid.ComputerNr, 
         (@t, eenheid) => new PersoonDTO 
         { 
          ComputerNr = @t.persoon.ComputerNr, 
          FAMILIENAAM = @t.persoon.FAMILIENAAM, 
          VOORNAAM = @t.persoon.VOORNAAM, 
          NAAM = @t.persoon.NAAM, 
          ADRES = @t.persoon.ADRES, 
          Een = eenheid 
         }).OrderBy(p => p.Een.PiramideId).ToList(); 

答えて

1

Entity Frameworkのは、モデルへの結果をマッピングし、その後、SQL文を生成し、データベースを照会することによって動作します。この特定のケースでは、PiramideIdが何であるか分かりませんので、SQL文を生成することはできません。あなたは、クエリを実行し、並べ替えることでこれを得ることができます。クエリを実行するには、AsEnumerableを使用するのが最も簡単な方法です。これはあなたに与えます

PagedView.Context.PERSOON 
       .Join(PagedView.Context.VERHURINGEN, 
         persoon => persoon.ComputerNr, 
         verhuring => verhuring.PersoonsID, 
         (persoon, verhuring) => new {persoon, verhuring}) 
       .Join(PagedView.Context.EENHEID, 
         @t => @t.verhuring.Eenheid, 
         eenheid => eenheid.ComputerNr, 
         (@t, eenheid) => new PersoonDTO 
         { 
          ComputerNr = @t.persoon.ComputerNr, 
          FAMILIENAAM = @t.persoon.FAMILIENAAM, 
          VOORNAAM = @t.persoon.VOORNAAM, 
          NAAM = @t.persoon.NAAM, 
          ADRES = @t.persoon.ADRES, 
          Een = eenheid 
         }) 
       .AsEnumerable() 
       .OrderBy(p => p.Een.PiramideId) 
       .ToList(); 
関連する問題