visual una tutorial tabla studio proyecto paso net mvc mostrar español datos curso crear consultas asp asp.net-mvc entity-framework entity-framework-6 entity-relationship ef-fluent-api

asp.net mvc - tutorial - Cómo crear una tabla de búsqueda y definir relaciones



mvc c# paso a paso (1)

Tenemos una tabla de búsqueda común aquí. Se parece a ti. LookupData tiene una clave principal y una clave externa para LookupTypes, que es equivalente a su enumeración y el valor. También podríamos tener algunos otros campos simples como un indicador o código que se identifican en la tabla de metadatos LookupType. Luego, en la tabla principal, podríamos tener "GenderLookupId", que apunta al campo LookupData.Id. Los identificadores en sí no tienen ningún significado y se pueden ingresar en cualquier orden. Si desea que el género 1 y 2 tengan significado, probablemente debería agregar otro atributo para eso (ver claves sustitutas).

Ejemplo con datos:

LookupType

ID Description CodeDesc BooleanDesc 1 Genders Gender Code NULL 2 Races Race Code Is Active

LookupData

ID LookupTypeId Description Code Boolean 789 1 Male M NULL 790 2 White W True 791 1 Female F NULL 792 2 Hispanic H False

Tabla de nombre principal

NameId Name GenderLookupId RaceLookupId 1234 Joe Smith 789 790 1235 Mary Meyers 791 792

Clases:

public class LookupType { public int Id { get; set; } public string Description { get; set; } public string CodeDescription { get; set; } public string BooleanDescription { get; set; }

}

public class LookupData { public int Id { get; set; } public int LookupTypeId { get; set; } public string Description { get; set; } public string Code { get; set; } public bool? BooleanValue { get; set; } public LookupType LookupType { get; set; }

}

public class Name { public int Id { get; set; } public string FullName { get; set; } public int? GenderLookupId { get; set; } public LookupData Gender { get; set; } }

Configuración de LookupData:

HasRequired(p => p.LookupType).WithMany(p=>p.LookupData).HasForeignKey(p=>p.LookupTypeId).WillCascadeOnDelete(false);

Configuración de nombre:

HasOptional(p => p.Gender).WithMany(p=>p.Name).HasForeignKey(p=>p.GenderLookupId).WillCascadeOnDelete(false);

Como puede ver a continuación, hay una tabla de búsqueda para los valores enum y quiero crear una relación entre los valores enum de una tabla y la columna LookupKey de la tabla de búsqueda (en lugar de la columna ID de la tabla de búsqueda).

Tabla de búsqueda:

ID | LookupType | LookupKey | LookupValue | 101 | Status | 0 | Passive | 106 | Gender | 1 | Male | 113 | Status | 1 | Active | 114 | Gender | 2 | Female | 118 | Status | 2 | Cancelled |


Tabla principal:

ID | Status | Gender | Name | ... 1 | 0 | 1 | John Smith | ... 2 | 1 | 2 | Christof Jahnsen | ... 3 | 2 | 1 | Alexi Tenesis | ... 4 | 0 | 2 | Jurgen Fechtner | ... 5 | 1 | 2 | Andreas Folk | ...

Sin embargo, al usar la relación PK-FK e InverseProperty como en las Anotaciones de Datos - Atributo InverseProperty, la relación se crea con la columna ID de la tabla de búsqueda y no puedo establecer la relación con la columna LookupKey. ¿Podría dar un ejemplo de cómo lograr esto?