tengo las dos entidades siguientes (entre muchos, pero estos me dan el problema)EF 4.1 Código primera clave externa agrega la columna extra
public class StartPoint
{
public int StartPointId { get; set; }
public string Description { get; set; }
public int StartPointNumber { get; set; }
public int StartAreaId { get; set; }
public StartArea StartArea { get; set; }
}
y
public class StartArea
{
public int StartAreaId { get; set; }
public string Description { get; set; }
public ICollection<StartPoint> StartPoints { get; set; }
}
Cuando permitiendo EF para crear mi la base de datos se quejó de que necesitaba desactivar la eliminación en cascada debido a múltiples rutas, lo que he hecho de la siguiente manera.
modelBuilder.Entity<StartPoint>()
.HasRequired(x => x.StartArea)
.WithMany()
.HasForeignKey(x => x.StartAreaId)
.WillCascadeOnDelete(false);
El problema es, cuando se crea la base de datos consigo dos claves externas, uno se llama StartAreaId, como me esperaba, y el otro es StartArea_StartAreaId. Solo StartAreaId se está utilizando. Por qué y cómo me deshago de StartArea_StartAreaId. Si elimino HasForeignKey en el contexto y elimino StartAreaId de la entidad, obtengo varias columnas StartArea_StartAreaId, como en StartArea_StartAreaId y StartArea_StartAreaId1. ¿Qué debo hacer para evitar que esto suceda? Solo quiero StartAreaId como mi clave externa.
Sí, por supuesto, no sé por qué no había pensado en esto. Gracias. – Dirk
Gracias Ladislav! Beneficiado por sus muchas respuestas, incluida esta. La única observación es que este problema es intermitente (mi colega no se vio obligada a proporcionar nada en WithMany, pero tuve que hacerlo (se merece MVP en EF :)) –