2017-06-06 107 views
0

多个实体对象,我有两个实体类如何获取数据使用单一的LINQ语句

[Table("Payment")] 
public class Payment 
{ 
    public Payment() 
    { 
     this.SchemeMember = new HashSet<SchemeMember>(); 
    } 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public long PaymentUid { get; set; } 

    /// <summary> 
    /// Member U id 
    /// </summary> 
    public int MemberUid { get; set; } 


    public ICollection<SchemeMember> SchemeMember { get; set; } 
} 

public class SchemeMember 
{ 
    /// <summary> 
    /// Gets or sets Member UID 
    /// </summary> 
    public int MemberUid { get; set; } 
} 

这两个实体由MemberUid相关。现在当我尝试使用下面的LINQ获取数据时,SchemeMember计数始终为0.我已经将Lazyloading禁用为false。

var result = (from payment in this.DbContext.Payment 
      join schemeMember in this.DbContext.SchemeMember on 
            Payment.MemberUid equals 
            schemeMember.MemberUid 
      select payment).ToList(); 

有没有人能帮我找出问题?提前致谢。

回答

1

如果您的映射设置正确,则不需要执行任何操作,请使用引用并让EF完成工作。

假设你想找到的模式成员有一个价值= “X” 支付:

VAR支付= DbContext.Payment.Where(P => p.SchemeMember.Any(S => s.Value ==“X”))。ToList();

注意:我已经使用Fluent Linq方法,从来没有发现类似Linq的SQL语法非常直观。 :)

我建议使用复数命名约定为子集合类:即, Payment.SchemeMembers因为它可以很容易地从你的多个视觉上解析你的单个关联(我有一个计划成员)。 (我有一些计划成员)