Witam,

Mam pewną tabelę o nazwie "Links" oraz tabele "Subjects", pomiędzy nimi jest dodatkowo tabela tworząca relacje wiele-do-wielu o nazwie "SubjectsInLinks".
Modele mam wygenerowane poprzez Entity Data Model, a moja klasa serwisowa mam metodę obsługująca dodanie nowego wpisu w tabeli "Links".
Problem tkwi w tym że aplikacja przewiduje dodanie wpisu do tabeli links pod warunkiem ze będzie dodany razem z nim przynajmniej jeden wpis w tabeli "SubjectsInLinks", nie mogę zrobić tego jednym zapytaniem ponieważ najpierw trzeba utworzyć wpis w tabeli "Links" ponieważ gdy on jeszcze nie istnieje nie mogę dodać wpisu do tabeli "SubjectsInLinks", jak to ugryźć?
Zastanawiałem się nad pobraniem ostatniego dodanego wpisu links i wtedy do niego dodanie referencji w tabeli "SubjectsInLinks" ale czy to dobre rozwiązanie?

Poniżej moja metoda która oczywiście nie działa poprawnie jednak prezentuje mój problem:

 
public void AddLink(LinkViewModel obj)
        {
            if (obj != null)
            {
                using (var db = _context.CreateNew())
                {
                    var subjects = db.Subjects.Where(x => obj.Subjects
                            .Select(y => y.SubjectId)
                            .ToList()
                            .Contains(x.Subject_Id)).ToList();

                    if (subjects.Count > 0)
                    {
                        var objNew = new Links
                        {
                            SubjectsInWeek = obj.SubjectsInWeek,
                            SubjectsInDay = obj.SubjectsInDay,
                            Subjects = subjects
                        };

                        db.Links.Add(objNew);
                        db.SaveChanges();
                    }
                }
            }
        }

Dla łatwiejsze wizualizacji umieszczam też modele tabel EF:

public partial class Subjects
    {
        public Subjects()
        {
            this.Links = new HashSet<Links>();
        }
    
        public int Subject_Id { get; set; }
        public int UserId { get; set; }
        public int TypeSchool { get; set; }
        public string Name { get; set; }
        public string ShortName { get; set; }
        public bool GroupLeader { get; set; }
    
        public virtual ICollection<Links> Links { get; set; }
    }


public partial class Links
    {
        public Links()
        {
            this.Subjects = new HashSet<Subjects>();
        }
    
        public int Link_Id { get; set; }
        public int SubjectsInWeek { get; set; }
        public int SubjectsInDay { get; set; }
    
        public virtual ICollection<Subjects> Subjects { get; set; }
    }

P.S.

var objNew = new Links
                        {
                            SubjectsInWeek = obj.SubjectsInWeek,
                            SubjectsInDay = obj.SubjectsInDay,
                        };

                        db.Links.Add(objNew);
                        db.SaveChanges();

                        var idLink = db.Links.Max(x => x.Link_Id);
                        var link = db.Links.SingleOrDefault(x => x.Link_Id == idLink);

                        if (link != null)
                        {
                            var idSubjects = obj.Subjects.Select(y => y.SubjectId).ToList();
                            var subjects = db.Subjects.Where(x => idSubjects.Contains(x.Subject_Id)).ToList();

                            foreach (var sub in subjects)
                            {
                                link.Subjects.Add(sub);
                            }

                            db.SaveChanges();
                        }
Też nie działa ;/