with one modelbuilder many has framework foreign sql-server entity-framework many-to-one entity-framework-6

sql server - one - Entity Framework 6-Tabla de muchos a muchos con información adicional



modelbuilder entity one to many (1)

PhoneNumberTypes no se debe vincular a PeoplePhoneNumbers. Deje que PeoplePhoneNumbers sea lo que es y solo una mesa de unión. PhoneNumberTypes debe estar vinculado a PhoneNumbers. EF debería ser capaz de crear esta configuración por convención. La información adicional que describe el número de teléfono también debe estar vinculada a PhoneNumbers. Este diseño se adhiere a más principios de diseño impulsado por el dominio (DDD) y también genera un mejor diseño de base de datos también.

Parece que no puedo publicar imágenes, así que déjame describir la imagen. Es un diagrama de tabla SQL que muestra las relaciones entre 4 tablas. Las tablas son:

  1. Gente
    • Carné de identidad
    • Nombre de pila
    • Apellido
  2. Números de teléfono
    • Carné de identidad
    • Número
  3. PhoneNumberTypes
    • Carné de identidad
    • Nombre
    • Descripción
  4. PeoplePhoneNumbers
    • PersonId
    • PhoneNumberTypeId
    • PhoneNumberId

Las dos tablas principales son People y PhoneNumbers. También hay un PhoneNumberTypes que describe el tipo de PhoneNumber (Home, Work, etc.).

La tabla PeoplePhoneNumbers sirve como una tabla de relaciones Many-To-Many entre People y PhoneNumbers. Sin embargo, también se conecta a PhoneNumberTypes para describir la relación.

He estado tratando de descubrir cómo manejar este Entity Framework porque EF no le permite agregar información adicional a la Tabla de Asociación (Muchos a Muchos).

Además de la información de PhoneNumberType, también encuentro que son piezas de datos adicionales que debo registrar en la tabla de la asociación como "Fecha de inicio", "Fecha de finalización", etc.

La única solución que he encontrado hasta ahora es crear una entidad en EF que combine los campos en PhoneNumberTypes, PhoneNumbers y PeoplePhoneNumbers en una sola entidad. Luego use procedimientos SQL almacenados para operaciones CRUD en su contra.

Yo preferiría una solución más centrada en EF. ¿Alguien sabe de uno?