Agregar valores a la relación "muchos a muchos" en Entidadframework
Tengo 3 entidades en Sqlserver que estoy mapeando con el asistente de visual Studio
Las tres entidades son las categorías de paquetes y las categorías de paquetes, donde las categorías de paquetes y una relación de muchos a muchos. Después de mapear estas entidades, obtengo 2 clases que son categorías y paquetes, se ven así: público clase parcial Paquete {paquete público () {this.Categories = new HashSet (); }
public string PackageSid { get; set; }
public string PackageName { get; set; }
public virtual ICollection<Category> Categories { get; set; }
}
Categoría de clase pública parcial {categoría pública () {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; }
}
y no obtengo nada para la entidad de la relación muchos a muchos (esta es una de package_categories). El Hall Thing funciona muy bien cuando trato de obtener información de los paquetes, por ejemplo, cada vez que intento consultar un paquete, obtengo paquetes con él. y lo mismo cuando trato de obtener paquetes de categorías.
El problema es que cuando intento actualizar un paquete y agregarle categorías, la categoría se agregará no solo a la entidad packages_categories sino también a las categorías self
Un ejemplo para el código:
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
});
Ahora, en este código, se agregará un paquete con una categoría a la base de datos, pero si la categoría ya existe, se lanzará una excepción a que la categoría ya está allí (supongamos que ya está ahí, esto significa que intenta agregarlo a Categorías auto),
¿Cómo puedo resolver un problema como este? ¿Qué estoy haciendo mal :( Muchas gracias.