Я использую EF4.1 с первым кодом и наследованием TPT (таблица по типу). У меня есть такая структура
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; }
}
, когда я удаляю клиента, я хочу, чтобы все продукты, связанные с этим клиентом, были удалены. Я могу указать WillCascadeOnDelete (true) между клиентом и продуктом:
modelBuilder.Entity<Customer>().HasMany(e => e.Products).WithRequired(p => p.Customer).WillCascadeOnDelete(true);
, но поскольку между SpecializedProduct и продуктом существует внешняя ключевая взаимосвязь, я получаю исключение, когда пытаюсь удалить клиента:
Оператор DELETE противоречит REFERENCE ограничение «SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct». Конфликт произошел в базе данных «Тест», таблица «dbo.SpecializedProduct», столбец «Id». Оператор был прерван.
Если я вручную установил каскад удаления для ограничения SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct, он работает, но я хотел бы иметь возможность указать это с помощью конструктора моделей или каким-либо другим способом в коде. Возможно ли это?
Заранее спасибо!
С уважением
Саймон