1

I have the following setup in Entity:

public class t_HT
{
    public int UNID { get; set; }

    public string Name { get; set; }

    public ICollection<t_HTC> Comments { get; set; }

}

AND

public class t_HTC
{
    public int UNID { get; set; }

    public int HTID { get; set; }

    [ForeignKey("HTID")]
    public t_HT HT { get; set; }

    public int CId { get; set; }

    [ForeignKey("CId")]
    public t_C C { get; set; }
}

AND

public class t_C
{
    public int UNID { get; set; }

    public string Name { get; set; }

    public ICollection<t_HTC> Comments { get; set; }
}

Where the relationships are as follows:

Many t_HTC to one t_HT

One t_HT to many t_HTC

AND

Many t_HTC to one t_C

One t_C to many t_HTC

This setup works fine and achieves what I need.

However, when querying using C# and Linq/Entity I can do the following:

var queryHt = context.ht.include(x => x.htc);

AND

var queryC = context.c.include(x => x.htc);

Either of these will return a single t_ht with a nested list of t_htc OR a single t_c with a nested list of t_htc

However, what I want to achieve is:

a single t_ht, with a nested list of t_htc, and then for t_htc to include the corresponding entry in t_c

I know I can achieve this by performing a join that joins queryC into queryHt but this seems a bit of a long way to go about doing this.

Surely entity can achieve what I am trying to do?

Please note variable names have been adjusted for the purpose of this question, and are not like this in my actual code.

1 Answer 1

1

You can achieve what you want with this:

var queryHt = context.ht.Include("htc.C");

or with the strong typed version:

var queryHt = context.ht.Include(x => x.htc.Select(y => y.C));

The strong typed version requires adding using System.Data.Entity;.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.