Respuesta

14

Si tiene una relación de uno a muchos en su modelo, el código EF primero habilitará la eliminación en cascada por convención predeterminada. Por lo tanto, no es necesario que haga nada especial, pero consideremos un escenario en el que desee anular la convención y desactivar la eliminación en cascada. Esta es la forma en que se hace por la API Fluido vino con EF CTP5 el día de hoy:

public class Customer 
{ 
    public int CustomerId { get; set; }   
    public virtual ICollection<Order> Orders { get; set; } 
} 

public class Order 
{ 
    public int OrderId { get; set; } 
    public int CustomerId { get; set; }   
    public virtual Customer Customer { get; set; }   
} 

public class StackoverflowContext : DbContext 
{ 
    public DbSet<Customer> Customers { get; set; } 
    public DbSet<Order> Orders { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Customer>() 
        .HasMany(c => c.Orders) 
        .WithRequired(o => o.Customer) 
        .HasForeignKey(o => o.CustomerId) 
        .WillCascadeOnDelete(false); 
    } 
} 
+1

Gracias Morteza, acabo de ver el mensaje mismo – merbla

+1

No hay problema, feliz Código-Firsting :) –

Cuestiones relacionadas