如何使用单个Linq语句将数据提取到多个实体对象

时间:2017-06-06 02:47:00

标签: c# entity-framework-4

我有两个实体类

[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 个答案:

答案 0 :(得分:1)

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

假设您想查找具有值=&#34; X&#34;

的架构成员的付款

var payments = DbContext.Payment.Where(p =&gt; p.SchemeMember.Any(s =&gt; s.Value ==&#34; X&#34;))。ToList();

注意:我使用了Fluent Linq方法,从未发现Linq-like-SQL语法非常直观。 :)

我建议对子集合类使用复数命名约定:I.e。 Payment.SchemeMembers因为它可以很容易地从您的多个关联中直观地解析您的单个关联(我有一个计划成员)。 (我有一些计划成员)