如何获取数据使用单一的LINQ语句
问题描述:
多个实体对象,我有两个实体类如何获取数据使用单一的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();
有没有人能帮我找出问题?提前致谢。
答
如果您的映射设置正确,则不需要执行任何操作,请使用引用并让EF完成工作。
假设你想找到的模式成员有一个价值= “X” 支付:
VAR支付= DbContext.Payment.Where(P => p.SchemeMember.Any(S => s.Value ==“X”))。ToList();
注意:我已经使用Fluent Linq方法,从来没有发现类似Linq的SQL语法非常直观。 :)
我建议使用复数命名约定为子集合类:即, Payment.SchemeMembers因为它可以很容易地从你的多个视觉上解析你的单个关联(我有一个计划成员)。 (我有一些计划成员)