Pregunta

En el código siguiente, necesito establecer una restricción de clave externa en ParentInfoAddProperties.ParentQuestionAnswersId para que dependa de ParentQuestionAnswers.Id (que es una clave principal).Estoy intentando hacerlo usando anotaciones de datos, pero Entity Framework 6 quiere crear una nueva columna de clave externa en mi tabla ParentQuestionAnswers que haga referencia a la columna ParentInfoAddProperties.Id, no a la columna ParentInfoAddProperties.ParentQuestionAnswersId.No quiero que Entity Framework cree una nueva columna de clave externa.

Agradecería mucho si alguien pudiera explicar qué anotaciones de datos o (si es necesario) asignaciones fluidas debo especificar para lograr la restricción de clave externa deseada.Gracias de antemano.

namespace Project.Domain.Entities
{  
    public class ParentQuestionAnswers
    {
        public ParentQuestionAnswers()
        {
            ParentInfoAddProperties = new ParentInfoAddProperties();
        }

        [Required]
        public int Id { get; set; }

        [Required]
        public int UserId { get; set; }

        public ParentInfoAddProperties ParentInfoAddProperties { get; set; }
    }

    public class ParentInfoAddProperties
    {
        [Required]
        public int Id { get; set; }

        [Required]
        public int ParentQuestionAnswersId { get; set; }
    }
}
¿Fue útil?

Solución

Podrías usar la siguiente anotación de datos y usar entidad en lugar de int

[Required]
[ForeignKey("ParentQuestionAnswers")]
public ParentQuestionAnswers ParentQuestionAnswers { get; set; }

para obtener el ID solo puedes agregar la propiedad

public int ParentQuestionAnswersId { get; set; }

pero aún necesitas el ParentQuestionAnswers propiedad para que EF te entienda.

(estas filas de código deben estar debajo del ParentInfoAddProperties clase)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top