2017-09-04 11 views
0

GetAllForumMemberのクエリ、任意のアドバイス?ABPフレームワークサブクエリ 'カウント'のエンティティへのLINQ

ScreenShot

System.NotSupportedException:「エンティティへのLINQは 方法 'System.Linq.IQueryable`1 [Weixin.Kia.Community.ThreadComment] GETALL()' メソッドを認識しない、およびこの方法は、店舗 表現に変換することができません。」あなたのコードは、SQLにそのを翻訳することはできませんリポジトリクラスとエンティティフレームワークを呼び出している瞬間

+0

スクリーンショットではなくコードを追加してください。問題が何であるかを示すエラーメッセージが表示されます。 LINQ to Entitiesは 'GetAll'メソッドをSQLに変換できません。リポジトリではなくデータベース内のテーブルを使用するようにコードを再構築してみてください。 – Scrobi

+0

スクリーンショットではなくコードを置き換えるアドバイスに感謝します。 実際、EFでcount()のサブクエリを構築する方法はわかりません。 エラーメッセージは、どのようにするかわからないメッセージです。 が好きです。 select threadCount =(dbo.Threadからの選択(1)t WHERE t.userId = @ tm.userId) from dbo.ThreadMember tm 元のSQLは、実際にはEFよりもはるかに簡単です。 –

+0

@Mcxieなぜ 'GetAll()'メソッド/拡張子を使用していますか、そしてどのような名前空間からこのメソッド/拡張子/アセンブリを取得しますか? – Progman

答えて

0

あなたのモデルがどのように構造化されているかは推測していますが、リポジトリではなくデータベースにあるテーブルを使用して問題を解決できます。

public class ForumMember 
{ 
    public int Id { get; set; } 
} 

public class Member 
{ 
    public int MemberId { get; set; } 
} 

public class ThreadComment 
{ 
    public int CreatorUserId { get; set; } 
} 


public class ForumContext : DbContext 
{ 
    public DbSet<ForumMember> ForumMembers { get; set; } 
    public DbSet<Member> Members { get; set; } 
    public DbSet<ThreadComment> ThreadComments { get; set; } 
} 

public class Repository 
{ 
    public IEnumerable<Something> GetAllForumMember() 
    { 
     using (var context = new ForumContext()) 
     { 
      var query = from fm in context.ForumMembers 
         join m in context.Members on fm.Id equals m.MemberId 
         //where add where clause 
         select new Something 
         { 
          memberId = m.MemberId, 
          commentCount = context.ThreadComments.Count(x => x.CreatorUserId == m.MemberId) 
          //... add other properties that you want to get. 
         }; 

      return query.ToList(); 

     } 
    } 
} 

これはテストされていないコードです。 Entity Framework & Linq-to-SQLを使用するための学習曲線がありますので、チュートリアルを進めることをお勧めします。 LinqPadのようなツールを入手することもできます。LinqPadは、データベースにLinqクエリを書くのに慣れるのに役立ちます。

これはやや役立ちたいと思っています。質問を詳細情報で更新する必要がない場合は、モデルやデータベースコンテキストのコードも含まれます。

+0

ありがとう、私はまた、ナビゲーションプロパティを使用できることがわかりました。 –

関連する問題