EF7 - Nombre de columna personalizado para la relación HasOne

entity-framework entity-framework-core

Pregunta

¿Cómo se especifica un nombre de columna personalizado con una relación HasOne en EF7?

Considere las siguientes clases de muestra:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

Y esta configuración fluida:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

Lo que lleva a esta configuración de base de datos:

public class House
{
    public int Id { get; set; }
    public int BedroomCount { get; set; }
    public Address Address { get; set; }
}

public class Address
{
    public int Id { get; set; }
    public string StreetName { get; set; }
    public string StreetNumber { get; set; }
}

¿Cómo especifico un nombre de columna que no sea "AddressId" en la tabla de Casa? No puedo encontrar un método similar a HasColumnName como el que hay en las propiedades que no son de navegación.

Estoy usando Entity Framework 7 RC1-Final.

Respuesta popular

Puede usar Data Annotations para configurar la clave externa de su relación.

public int AddressID { get; set; }

[ForeignKey("AddressID")]
public Address Address { get; set; }

Esto requiere una propiedad que se utilizará como la clave externa en su relación. Además, tenga en cuenta que se recomienda que tenga una clave externa explícita para sus relaciones que no sea una clave externa oculta. Esto evitará que tenga muchos problemas al insertar / actualizar, ya que no necesita configurar la Address propiedad de navegación completa para guardar una entidad de la House . Vea el problema aquí

No probado, pero quizás esto podría funcionar (no puedo encontrar una manera de instalar EF7 en este momento)

public int AddressID { get; set; }

[ForeignKey("AddressID")]
public Address Address { get; set; }

Puede consultar aquí para ver más ejemplos: Relaciones de clave externa EF7




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué