Vâng, tôi có một-nhiều mô hình liên quan:Làm thế nào để loại bỏ một đứa trẻ đến nhiều hồ sơ liên quan trong cơ sở dữ liệu mã EF đầu tiên?
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Child> Children { get; set; }
}
public class Child
{
public int Id { get; set; }
public string ChildName { get; set; }
}
Những gì tôi muốn làm là rõ ràng Parent.Children
và loại bỏ các đối tượng trẻ em có liên quan từ cơ sở dữ liệu. Tôi đã cố gắng:
Cơ sở dữ liệu bối cảnh lớp:
modelBuilder.Entity<Parent>()
.HasMany(p => p.Children)
.WithOptional()
.WillCascadeOnDelete(true);
này hoạt động tốt, nhưng tôi vẫn có hồ sơ dư thừa trong cơ sở dữ liệu với Parent_Id = null
lĩnh vực khi tôi làm
parent.Children.Clear();
repository.InsertOrUpdate(parent);
trong tôi lớp kho lưu trữ. Ngoài hành vi tương tự là khi tôi làm:
modelBuilder.Entity<Parent>()
.HasMany(pr => pr.Children)
.WithOptional(ri => ri.Parent)
.WillCascadeOnDelete(true);
với thêm tài sản Parent
trong Child
lớp
public class Child
{
...
public Parent Parent { get; set; }
...
}
hoặc khi tôi làm
modelBuilder.Entity<Child>()
.HasOptional(p => p.Parent)
.WithMany(p => p.Children)
.HasForeignKey(p => p.Parent_Id)
.WillCascadeOnDelete(true);
với tài sản PARENT_ID bổ sung trong Child
lớp
public class Child
{
...
public int Parent_Id { get; set; }
...
}
Vì vậy, làm thế nào tôi có thể cấu hình xóa tầng một cách chính xác? Hoặc làm thế nào tôi nên loại bỏ các thực thể con? Tôi cho rằng đây là nhiệm vụ bình thường nhưng tôi chỉ thiếu một cái gì đó.
Bạn có thể đăng thêm một số mã không? Có lẽ nội dung đầy đủ của 'OnModelCreating()' của bạn? Khi tôi sao chép và dán các thực thể của bạn và nỗ lực lập bản đồ đầu tiên của bạn (và đặt 'Id' làm thuộc tính khóa cho cả hai thực thể), các lần xóa được xếp tầng chính xác cho tôi. –