estoy tratando de crear una relación de muchos a muchos en Entity Framework (código primero), de acuerdo con el siguiente mensaje: Database design for limited number of choices in MVC and Entity Framework?Relación de muchos a muchos con tabla de unión en Entity Framework?
Sin embargo, no puedo conseguir que funcione correctamente, y estoy Seguro que estoy haciendo algo muy simple de la manera incorrecta. Aquí está el diagrama que no tengo de mis intentos:
La punta de la tabla de unión es que necesito tener una propiedad adicional, Nivel, en la relación, por lo que no puede ir sólo con una relación directa entre el Consultor y el Programa. Agregué la entidad ConsultantProgramLink de forma manual en el diseñador, y luego agregué asociaciones a Programa y Consultor respectivamente, seleccionando agregar un FK para cada uno, y luego los convertí en las dos claves principales. Pero cuando lo hago así, no funciona como esperaba:
Si hubiera hecho una asociación directa entre el Consultor y el Programa, habría podido referirme, por ejemplo, a los Programas de Consultor en mi código. Pero eso no funciona ahora con la tabla de unión. ¿Hay alguna forma de remediar esto, o siempre tengo que pasar por la propiedad de unión (Consultant.ConsultantProgramLink.Programs)? En cualquier caso, incluso si trato de pasar por la propiedad de unión, no ayuda. Puedo hacer Consultant.ConsultantProgramLink en mi código, pero otro punto no me da los Programas de propiedad de navegación (que por algún motivo también se convirtieron simplemente en Programa, ¿por qué? ¿Puedo cambiarles el nombre si eventualmente tengo acceso a ellos?) .
Entonces, ¿qué estoy haciendo mal? ¿Por qué no puedo acceder a las propiedades a través de la notación de puntos en mi código?
Ok, gracias, tiene sentido. Pero me pregunto si estoy pensando en todo esto mal?No puedo entender cómo hacer realmente lo que quiero con esto: – Anders
Digamos que creo un nuevo Consultor. Quiero que ese consultor tenga todos los Programas en su propiedad Programas. Y luego quiero que el usuario pueda establecer el nivel de competencia para cada uno de estos. Pero 1: ¿cómo asigno todos los Programas en la tabla de Programas a cada Consultor? Y 2: ¿y si agrego nuevos Programas a la tabla de Programas (que deseo poder hacer)? ¿Ves lo que necesito? Una lista de programas como Adobe Illustrator, MS Word, etc., y esta lista debe ser extensible. Pero cada Consultor siempre debe "tener" todos los Programas en su propiedad Programas, y solo establecer el nivel en el perfil de edición ... – Anders
Lo pensaré. –