Tôi đang sử dụng EF4.1 với mã đầu tiên và TPT (Bảng cho mỗi loại) thừa kế. Tôi có cấu trúc như thế nàyMã TPT đầu tiên và thác trên xóa
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; }
}
khi tôi xóa khách hàng, tôi muốn tất cả các sản phẩm liên kết với khách hàng đó sẽ bị xóa. Tôi có thể chỉ định một WillCascadeOnDelete (true) giữa khách hàng và các sản phẩm:
modelBuilder.Entity<Customer>().HasMany(e => e.Products).WithRequired(p => p.Customer).WillCascadeOnDelete(true);
nhưng kể từ khi có một mối quan hệ quan trọng foreighn giữa SpecializedProduct và sản phẩm tôi nhận được một ngoại lệ khi tôi cố gắng để xóa các khách hàng:
Câu lệnh DELETE xung đột với ràng buộc REFERENCE "SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct". Xung đột xảy ra trong cơ sở dữ liệu "Kiểm tra", bảng "dbo.SpecializedProduct", cột 'Id'. Các tuyên bố này đã bị chấm dứt.
Nếu tôi tự đặt một trên cascade delete trên SpecializedProduct _TypeConstraint_From_Product_To_SpecializedProduct hạn chế nó hoạt động, nhưng tôi muốn để có thể xác định điều này bằng cách sử dụng modelbuilder hoặc một số cách khác trong mã. Điều này có thể không?
Cảm ơn trước!
Trân trọng
Simon
phải mất 13 tháng nhưng Tôi đã nhận được câu trả lời của tôi :-) Cảm ơn! Như tôi nhớ tôi đã kết thúc với việc thực hiện một số sql để tự xác định xóa tầng trên tạo mô hình. –