Estoy utilizando EF4.1 con el código primero y la herencia TPT (tabla por tipo). Tengo una estructura como estaPrimero el código TPT y en cascada en eliminar
public class Customer
{
public virtual ICollection<Product> Products {get; set;}
}
public class Product
{
[Required]
public int Id { get; set; }
[Required]
public virtual Customer {get; set;}
public decimal Price { get; set; }
}
public class SpecializedProduct : Product
{
public string SpecialAttribute { get; set; }
}
cuando se borra un cliente Quiero que todos los productos asociados a ese cliente que desea eliminar. Puedo especificar un WillCascadeOnDelete (verdadero) entre el cliente y el producto:
modelBuilder.Entity<Customer>().HasMany(e => e.Products).WithRequired(p => p.Customer).WillCascadeOnDelete(true);
pero ya que no hay una relación de clave foreighn entre SpecializedProduct y Producto obtengo una excepción al intentar eliminar el cliente:
La instrucción DELETE entró en conflicto con la restricción REFERENCE "SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct". El conflicto ocurrió en la base de datos "Test", tabla "dbo.SpecializedProduct", columna "Id". La instrucción se ha terminado.
si fijo manualmente una de supresión en cascada en el SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct constreñimiento funciona, pero me gustaría ser capaz de especificar esto usando el modelbuilder o de alguna otra manera en el código. es posible?
¡Gracias de antemano!
Best Regards
Simon
se tomó 13 meses, pero Obtuve mi respuesta :-) ¡Gracias! Como recuerdo, terminé ejecutando algunos sql para definir manualmente la eliminación de cascada en la creación del modelo. –