简体   繁体   English

渴望加载与关联实体的多对多关系-实体框架

[英]Eager Loading Many to Many relationship with an Association Entity - Entity Framework

I have a Many to Many relationship with an additional entity to manage the association. 我与其他实体之间存在多对多关系,以管理该关联。

Entities as below: 实体如下:

public class WorkOrderItem : EntityBase
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long WorkOrderItemId { get; set; }

    public virtual ICollection<WorkOrderItemLanguage> WorkOrderItemLanguages { get; set; } 

}

 public class WorkOrderItemLanguage
{

    [Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.None)]
    public long WorkOrderItemId { get; set; }
    [Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.None)]
    public string LanguageId { get; set; }
    [Key, Column(Order = 2), DatabaseGenerated(DatabaseGeneratedOption.None)]
    public LanguageType LanguageType { get; set; }

    public virtual WorkOrderItem WorkOrderItem { get; set; }
    public virtual Language Language { get; set; }
}


public class Language : EntityBase
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public string LanguageId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Code { get; set; }
    public string IsoCode { get; set; }
    public int Ordinal { get; set; }

    public virtual ICollection<WorkOrderItemLanguage> WorkOrderItemLanguages { get; set; } 

}

ModelBuilder Configurations ModelBuilder配置

public class WorkOrderItemConfiguration : EntityTypeConfiguration<WorkOrderItem>
{
    public WorkOrderItemConfiguration()
    {
        HasMany(x => x.WorkOrderItemLanguages).WithRequired(x => x.WorkOrderItem).HasForeignKey(x => x.WorkOrderItemId);
    }
}

public class LanguageConfiguration : EntityTypeConfiguration<Language>
{
    public LanguageConfiguration()
    {
        HasMany(x => x.WorkOrderItemLanguages).WithRequired(x => x.Language).HasForeignKey(x => x.LanguageId);
    }
}

if a produce a query to select a WorkOrderItem with all the languages that are related to it, how do i include the Language Entity? 如果产品查询选择与之相关的所有语言的WorkOrderItem,我如何包括语言实体?

the below query does not load the Language entity 下面的查询不会加载语言实体

 UnitOfWork.Set<WorkOrderItem>()
            .Include(x => x.WorkOrderItemLanguages.Select(l=>l.Language))
            .FirstOrDefault(x.WorkOrderItemId == id);

try this 尝试这个

var TesteEntities = UnitOfWork.Set<WorkOrderItem>()
        .Include("WorkOrderItemLanguages.Language")
        .FirstOrDefault(x.WorkOrderItemId == id);

and you will find Language here 你会在这里找到语言

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM