2016-10-27 10 views
0
SELECT 
`Distinct1`.`UserId`, 
`Distinct1`.`FirstName`, 
`Distinct1`.`LastName`, 
`Distinct1`.`EmailAddress`, 

FROM (SELECT DISTINCT 
`Extent2`.`UserId`, 
`Extent2`.`FirstName`, 
`Extent2`.`LastName`, 
`Extent2`.`EmailAddress`, 

    FROM `AssistantTo` AS `Extent1` 
    INNER JOIN `User` AS `Extent2` ON `Extent1`.`AssistantId` = `Extent2`.`UserId` 
    INNER JOIN `CustomTagUser` as `Extent3` ON `Extent3`.`UserId` = `Extent2`.`UserId` 
WHERE `Extent1`.`OwnerId` = 274 AND `Extent3`.`CustomTagId` = 114 
) AS `Distinct1` 

これは私のテーブル構造である:私は次のクエリを使用してみましたが、それは私にエラーを与えているラムダ式のEntity Frameworkを使用してmysqlクエリーを作成するには?

enter image description here

var assistants = 
        dbContext.AssistantsTo 
         .Include(x => x.Assistant) 
         .Include(x => x.Assistant.CustomTagUser) 
         .Where(at => 
          at.OwnerId == currentUser.UserId 
          && (at.Assistant.CustomTagUser.Count(y => y.CustomTagId == filter) > 0) 
          ) 
         .Select(at => at.Assistant) 
         .Distinct() 
         .ToList(); 

エラー:{ " 'where句' 内の不明な列 'Extent1.AssistantId'"}

基本的に私は

`Extent3`.`CustomTagId` = 114 

ためのフィルタを与えることに問題がある、私たちはいずれかを使用することができると思います()しかし、私は大規模なデータを持つ任意の()を使用して悪い経験を持っている& mysql。

モデルクラス

public class AssistantTo 
    { 
     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int AssistantToId { get; set; } 
     public int AssistantId { get; set; } 
     [ForeignKey("AssistantId")] 
     public virtual User Assistant { get; set; } 
     public int OwnerId { get; set; } 
     [ForeignKey("OwnerId")] 
     public virtual User Owner { get; set; } 
    } 

    public class CustomTagUser 
    { 
     [Key] 
     public int CustomTagUserId { get; set; } 
     public int CustomTagId { get; set; } 
     public int UserId { get; set; } 
     public DateTime CreatedOn { get; set; } 
     [ForeignKey("CustomTagId")] 
     public virtual CustomTags CustomTags { get; set; } 
     [ForeignKey("UserId")] 
     public virtual User User { get; set; } 
    } 


[Table("User")] 
    public class User 
    { 
     [Key] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int UserId { get; set; } 

     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string EmailAddress { get; set; } 
     public string Password { get; set; } 
     ..... 
     public ICollection<CustomTagUser> CustomTagUser { get; set; } 
    } 
} 

基本的に私はEF

AND Extent3.CustomTagId = 114 
+0

...これを試してみてくださいクールと一致しないエリー。 'Distinct1' &&'Extent2'はどこですか? –

+0

これはエイリアスで、EFによって生成されます。慎重にクエリを参照&あなたはアイデアを取得します –

答えて

0
var assistants = 
        dbContext.AssistantsTo 
         .Include(x => x.Assistant) 
         .Include(x => x.Assistant.CustomTagUser) 
         .Where(at => 
          at.OwnerId == currentUser.UserId && 
          (        
           at.Assistant.CustomTagUser.Select(x => x.CustomTagId).Contains(filter) 
          ) 
         .Select(at => at.Assistant) 
         .Distinct() 
         .ToList();  

をこの部分を適用するの主な問題を持っているあなたのテーブル構造

関連する問題