Entity Framework 6 tabla múltiple a un código de relación de clave externa primero
Me pregunto si alguien podría aconsejarme sobre cómo lograr lo siguiente utilizando el código primero en EF6
Si agrego el Table_3 como una Lista a Table_1 & Table_2 en mis entidades. EF genera automáticamente una columna de clave externa para ambas tablas en la Tabla_3 en lugar de reconocer que son del mismo tipo.
Mis clases modelo se establecen de la siguiente manera.
public interface IParent
{
int ID { get; set; }
List<Table_3> Children { get; set; }
}
public class Table_1 : IParent
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public virtual List<Table_3> Children { get; set; }
}
public class Table_2 : IParent
{
[Key]
public int ID { get; set; }
public string Name { get; set; }
public virtual List<Table_3> Children { get; set; }
}
public class Table_3
{
[Key]
public int ID { get; set; }
public int ParentID { get; set; }
[ForeignKey("ParentID")]
public virtual IParent Parent { get; set; }
}
El código EF primero genera el siguiente
EditarSolo para hacerle saber a cualquiera que tenga los mismos problemas.
Ahora he resuelto esto cambiando la interfaz de IParent a una clase abstracta que mis clases ahora tienen el siguiente aspecto
[Table("ParentBase")]
public abstract class ParentBase
{
[Key]
public int ID { get; set; }
public List<Table_3> Children { get; set; }
}
[Table("Table_1")]
public class Table_1 : ParentBase
{
public string Name { get; set; }
}
[Table("Table_2")]
public class Table_2 : ParentBase
{
public string Name { get; set; }
}
[Table("Table_3")]
public class Table_3
{
[Key]
public int ID { get; set; }
public int ParentID { get; set; }
[ForeignKey("ParentID")]
public virtual ParentBase Parent { get; set; }
}
con un arreglo de mesa de
Esto funcionará aunque hubiera sido mejor si se hubiera podido cumplir con el original.