Код сначала TPT и каскад при удалении

Я использую 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, он работает, но я хотел бы иметь возможность указать это с помощью конструктора моделей или каким-либо другим способом в коде. Возможно ли это?

Заранее спасибо!

С уважением

Саймон

10
задан Simon Stender Boisen 19 July 2011 в 12:02
поделиться