[英]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.