14

Digamos que tengo estas dos entidades muy básicas:Código EF4.1 Primero: Cómo deshabilitar supresión en cascada para una relación sin propiedad de navegación en la entidad dependiente

public class ParentEntity 
{ 
    public int Id; 
    public virtual ICollection<ChildEntity> Childrens; 
} 

public class ChildEntity 
{ 
    public int Id; 
    public int ParentEntityId; // Foreign Key 
    public virtual ParentEntity parent; // [NOTWANTED] 
} 

Por alguna razón, no quiero que la ChildEntity para mantener una referencia de regreso a su padre. Solo quiero que mantenga la identificación de ParentEntity, pero nada más. Hasta ahora, no hay problema, simplemente borré la línea [NOTWANTED], y todo funciona como se esperaba.

Mi problema aquí es: ¿cómo desactivar la eliminación de cascada en ese caso específico?

Si todavía tenía la propiedad de navegación de los padres sería tan fácil como:

modelBuilder.Entity<ChildEntity>() 
    .HasRequired(c => c.parent) 
    .WithMany(p => p.Childrens) 
    .WillCascadeOndelete(false) 

Sin embargo, sin la propiedad de navegación no tengo ni idea de cómo puedo lograr desactivar la cascada de borrado (sin desactivar globalmente por supuesto, ni por mesa, pero solo por la relación).

Lo que he hecho en este momento es la creación de la clave externa como int anulable, con el fin de desactivar la cascada de borrar, pero eso no es bastante:

public int? ParentEntityId; // Foreign Key - nullable just to disable cascade on delete 

¿Cómo puedo conseguir que funcione con ¿API fluido? Piensa que debería ser posible.

+0

necesita .hasOne (ParentEntity) – Saeid

Respuesta

17

Debe configurar desde el otro lado de la asociación:

modelBuilder.Entity<ParentEntity>() 
    .HasMany(p => p.Children) 
    .WithRequired() 
    .HasForeignKey(c => c.ParentEntityId) 
    .WillCascadeOnDelete(false); 
+1

Woooo! Eso es bueno, muchas gracias :) – darkey

+0

Tuve que cambiar .WithRequired() a .WithRequired (c => c.ParentEntity) – Mason240

+0

Si tiene una propiedad de navegación del elemento secundario al secundario, puede configurar la cascada en el mapeo de niños –

Cuestiones relacionadas