Linking Tables in Repository
From Logic Wiki
Include / ThenInclude
public Proposal GetProposal(long proposalId)
{
var retVal1 = _vdsContext.vds_Proposal
.Include(k => k.VdsProposalSection)
.ThenInclude(k => k.Section)
.Include(k => k.VdsProposalSection)
.ThenInclude(k => k.ProposalQuestion)
.ThenInclude(k => k.Question)
.ThenInclude(k => k.QuestionType)
.Include(k => k.VdsProposalSection)
.ThenInclude(k => k.ProposalQuestion)
.ThenInclude(k => k.ProposalQuestionAnswer)
.ThenInclude(k => k.PossibleAnswer)
.Where(t => t.ProposalId == proposalId && t.IsDeleted == false);
return retVal1.FirstOrDefault();
}
Eliminating Soft Deletes
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Proposal>().HasQueryFilter(p => !p.IsDeleted);
modelBuilder.Entity<ProposalQuestion>().HasQueryFilter(p => !p.IsDeleted);
modelBuilder.Entity<ProposalQuestionAnswer>().HasQueryFilter(p => !p.IsDeleted);
modelBuilder.Entity<Question>().HasQueryFilter(p => !p.IsDeleted);
modelBuilder.Entity<QuestionType>().HasQueryFilter(p => !p.IsDeleted);
modelBuilder.Entity<PossibleAnswer>().HasQueryFilter(p => !p.IsDeleted);
}
Ignoring Query Filters
blogs = db.Blogs
.Include(b => b.Posts)
.IgnoreQueryFilters()
.ToList();
See AutoMapper