6

Dans NHibernate fluide, vous pouvez définir les paramètres de cascade pour un mappage, par ex.Comment désactiver la suppression en cascade dans une relation un à plusieurs avec l'API EF CTP5 Fluent

public class StoreMap : ClassMap<Store> 
{ 
    public StoreMap() 
    { 
    Id(x => x.Id); 
    Map(x => x.Name); 
    HasMany(x => x.Staff) 
     .Inverse() 
     .Cascade.None(); 
    HasManyToMany(x => x.Products) 
    .Cascade.All() 
    .Table("StoreProduct"); 
    } 
} 

Comment cela est-il fait dans Entity Framework "Code First"?

Répondre

14

Si vous avez une relation un à plusieurs dans votre modèle, le code EF permet d'abord d'activer la suppression en cascade par par défaut. Vous n'avez donc pas vraiment besoin de faire quelque chose de spécial, mais considérons un scénario dans lequel vous voulez remplacer la convention et désactiver la suppression en cascade. Voici comment cela se fait par l'API Fluent est venu avec EF CTP5 plus tôt aujourd'hui:

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

Merci Morteza, juste vu le poste moi-même – merbla

+1

Pas de problème, heureux de code Firsting :) –

Questions connexes