que implementó un bidireccional 1: 1 relación basada en esta respuesta:Eliminar en cascada Regla de EF 4.1 Código Primero cuando se utiliza Shared Key Primaria Asociación
Primary /Foreign Key in Entity Framework
que definen la relación bidireccional de esta manera:
public class Student
{
public virtual int StudentId { get; set; }
public virtual Anamnesis Anamnesis { get; set; }
. . .
}
public class Anamnesis
{
[Key, ForeignKey("Student")]
public int AnamnesisId { get; set; }
public virtual Student Student { get; set; }
. . .
}
donde, Estudiante es la entidad principal y la anamnesis que la entidad que comparte el PK.
Ahora quisiera que la relación creada tuviera una Regla de Eliminar = CASCADA. En realidad, la relación que se está creando tiene Eliminar regla = sin efecto, como se ve en la siguiente imagen:
Si elimino manualmente esta relación dentro de la ventana Propiedades de la tabla y añadir otra relación con la regla de supresión = CASCADE , el código funciona como espero que me permita eliminar un Estudiante y es una Anamnesis compartida que tiene la misma ID.
lo tanto, aquí va mi pregunta: ¿
¿Hay una manera de utilizar la anotación de datos (API no Fluido) en mi clase de modo que consiga una relación con eliminación en cascada regla? Preferiría usar la anotación de datos, pero si no es posible, estaría contento con algún código Fluent API que haga que esto funcione.
NOTA
He probado el código API Fluido que se muestra en este post. No funciona en mi caso donde tengo propiedades bidireccionales.
Uhmmm ... ahora que he publicado la pregunta que veo que se me olvidó la palabra '' virtual' para la propiedad AnamnesisId' para cumplir con la respuesta de Ladislav vinculada anteriormente. quizá este es el problema. Debo volver a probar todo de nuevo. : D –
¿Puede mostrar el código completo? EF code-first usa la eliminación en cascada de forma predeterminada cada vez que es posible y mis dos ejemplos en la pregunta vinculada también lo usan. –
@Ladislav: lo probé de nuevo y verifiqué la relación creada en la base de datos. Sigue siendo el mismo No CASCADE. Entonces, la palabra clave virtual no es el problema. El código que define la relación es el que muestro arriba. ¿Necesitas algo más? –