我有两个实体类
[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();
任何人都可以帮助我找出问题吗?提前谢谢。
答案 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因为它可以很容易地从您的多个关联中直观地解析您的单个关联(我有一个计划成员)。 (我有一些计划成员)