2012-09-23 23 views
5

¿Por qué las relaciones con WillCascadeOnDelete (false) definidas en la configuración son siempre ciertas en la migración generada?Eliminación en cascada de Entity Framework Migration siempre es verdadero incluso WillCascadeOnDelete (falso) en la configuración

Aquí está el código de configuración

public class PartySuppliesConfiguration:EntityTypeConfiguration<PartySupplies> 
{ 
    public PartySuppliesConfiguration() 
    { 
     HasKey(x => x.Id); 
     HasRequired(x=>x.Supplier).WithMany().HasForeignKey(x=>x.SupplierId).WillCascadeOnDelete(false); 
     HasRequired(x => x.Product).WithMany().HasForeignKey(x => x.ProductId).WillCascadeOnDelete(false); 
     HasRequired(x => x.Currency).WithMany().HasForeignKey(x => x.CurrencyId).WillCascadeOnDelete(false); 
     HasRequired(x => x.CreatedUser).WithMany().HasForeignKey(x => x.CreatedUserId).WillCascadeOnDelete(false); 
     Property(x => x.UnitPrice).HasColumnType("Money"); 
    } 
} 

y aquí es la migración generada

public override void Up() 
    { 
     CreateTable(
      "PartySupplies", 
      c => new 
       { 
        Id = c.Int(nullable: false, identity: true), 
        SupplierId = c.Int(nullable: false), 
        ProductId = c.Int(nullable: false), 
        UnitPrice = c.Decimal(nullable: false, precision: 18, scale: 2), 
        CurrencyId = c.Int(nullable: false), 
        FromDate = c.DateTime(nullable: false), 
        ThruDate = c.DateTime(), 
        CreatedUserId = c.Int(nullable: false), 
       }) 
      .PrimaryKey(t => t.Id) 
      .ForeignKey("Parties", t => t.SupplierId, cascadeDelete: true) 
      .ForeignKey("Products", t => t.ProductId, cascadeDelete: true) 
      .ForeignKey("Curencies", t => t.CurrencyId, cascadeDelete: true) 
      .ForeignKey("Users", t => t.CreatedUserId, cascadeDelete: true) 
      .Index(t => t.SupplierId) 
      .Index(t => t.ProductId) 
      .Index(t => t.CurrencyId) 
      .Index(t => t.CreatedUserId); 

    } 

Respuesta

1

podría ser una pregunta tonta, pero ¿ha anulado el método OnModelBuilding en DbContext y añadido modelBuilder.Configurations.Add(new PartySuppliesConfiguration());? ¿Tiene PartySuppliers alguna Anotación de datos que pueda estar anulando la clase de configuración de entidad? ¿O tal vez se deriva de otra clase donde cascadeondelete está establecido en verdadero?

+0

Lo noté hoy cuando no agregué 'modelBuilder.Configurations.Add (new MyMappingClass())' al método OnModelBuilding. – DDiVita

Cuestiones relacionadas