Dodawanie wartości do relacji „wiele do wielu” w ramach podmiotu

Mam 3 elementy w Sqlserver, które mapuję za pomocą kreatora Visual Studio

Te trzy elementy są kategoriami pakietów i pakietami_kategorii, gdzie kategorie_pakiety mają wiele do wielu relacji. Po mapowaniu tych jednostek otrzymuję 2 klasy, które są kategoriami i pakietami, wyglądają tak: public class class Package {public Package () {this.Categories = new HashSet (); }

    public string PackageSid { get; set; }
    public string PackageName { get; set; }

    public virtual ICollection<Category> Categories { get; set; }
} 

publiczna część cząstkowa Kategoria {public Category () {this.Packages = new HashSet (); }

    public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public bool isDefault { get; set; }

    public virtual ICollection<Package> Packages { get; set; }
}

i nie dostaję niczego dla istoty relacji wielu do wielu (ta jedna z pakietów_kategorii) sala działa dobrze, gdy próbuję uzyskać informacje z pakietów na przykład wtedy, gdy próbuję wysłać zapytanie do pakietów, otrzymuję z nim pakiety i to samo, gdy próbuję zdobyć pakiety kategorii.

Problem polega na tym, że gdy próbuję zaktualizować pakiet i dodać do niego kategorie, kategoria zostanie dodana nie tylko do kategorii pakietów elementów, ale także do kategorii siebie

Przykład kodu:

var categoriesList=List<Categoriy>();


categoriesList.Add(new Cateogry{
                    categoryname="catem",
                    IsDefault=false,
                    CategoryId=2332

});

var _packagesContext=new DBPackages();
_packagesContext.Add(new Packages{
                      packageSid="Sid blaaa.",
                      PackageName="TestPackage",
                      Categories=categoriesList
                           });

Teraz w tym kodzie pakiet z jedną kategorią zostanie dodany do bazy danych, ale jeśli kategoria już tam jest, zostanie zgłoszony wyjątek, że kategoria już istnieje (załóżmy, że już tam jest, oznacza to, że próbuje ją dodać do Kategorie siebie),

Jak mogę rozwiązać problem w ten sposób? co robię źle :( Dzięki bardzo.

questionAnswers(1)

yourAnswerToTheQuestion