Reputation: 5898
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
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?
the below query does not load the Language entity
UnitOfWork.Set<WorkOrderItem>()
.Include(x => x.WorkOrderItemLanguages.Select(l=>l.Language))
.FirstOrDefault(x.WorkOrderItemId == id);
Upvotes: 0
Views: 314
Reputation: 1529
try this
var TesteEntities = UnitOfWork.Set<WorkOrderItem>()
.Include("WorkOrderItemLanguages.Language")
.FirstOrDefault(x.WorkOrderItemId == id);
and you will find Language here
Upvotes: 2