Я использую EF4.1 с первым кодом и наследование TPT (Table per Type). У меня есть такая структура
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);
но поскольку существует ключевое отношение foreighn между SpecializedProduct и Product i, я получаю исключение при попытке удалить клиента:
Операция DELETE противоречила ограничению REFERENCE "SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct". Конфликт произошел в базе данных "Тест", таблице "dbo.SpecializedProduct", в столбце "Id". Заявление завершено.
Если я вручную установил каскад on delete в свойстве SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct, он работает, но я хотел бы указать это с помощью модификатора модели или каким-либо другим способом в коде. Возможно ли это?
Спасибо заранее!
С наилучшими пожеланиями
Саймон