Asignación de clave externa en la relación HasOptional (). WithOptionalDependent () en Entity Framework 6
Tengo el siguiente modelo de datos en Entity Framework 6.1.3:
using System.Data.Entity;
public class Student
{
public int Id { get; set; }
public virtual Contact Contact { get; set; }
}
public class Contact
{
public int Id { get; set; }
public virtual Student Student { get; set; }
}
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Contact>()
.HasOptional(x => x.Student)
.WithOptionalDependent(x => x.Contact)
.WillCascadeOnDelete(true);
}
}
public static class Program
{
private static void Main()
{
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
using (var context = new MyContext())
context.Database.Initialize(force: true);
}
}
Cuando lanzo este código, obtengo exactamente la estructura de tabla correcta a la que apunto:
dbo.Contacts
Id (PK)
Student_Id (FK, NULL, CASCADE ON DELETE)
dbo.Students
Id (PK)
Sin embargo, ahora me gustaría agregar elStudent_Id
propiedad que estará disponible en elContact
entidad. Entonces puedo leer elStudent_Id
sin necesidad de unirse a la otra mesa a través de.Student.Id
navegación.
Si agrego la propiedad a laContact
entidad, termino con dos columnasStudent_Id
yStudent_Id1
, o termino con un mensaje de error que diceEach property name in a type must be unique.
.
La columna ya está en la base de datos, todo lo que necesito es tenerla también en la entidad, ¿por qué hay tantos problemas? ¿Hay alguna solución?