2012-01-31 43 views

Trả lời

19

Khi bạn sử dụng dbContext.SomeEntitySet.Add(entityInstance); trạng thái cho điều này và tất cả các thực thể/bộ sưu tập liên quan của nó được đặt để thêm vào, trong khi dbContext.Entry(entityInstance).State = EntityState.Added; cũng thêm tất cả các thực thể/bộ sưu tập liên quan vào ngữ cảnh nhưng để chúng chưa được sửa đổi. Vì vậy, nếu thực thể mà bạn đang cố gắng tạo có một thực thể liên quan (và giá trị của nó không phải là null), khi bạn sử dụng Thêm nó sẽ tạo một đối tượng mới cho thực thể con đó, trong khi thực thể khác thì không.

+0

và điều này cũng áp dụng cho EntityState.Deleted & EntityState.Changed? –

+0

Tôi tin bạn tham khảo dbContext.Entry (entityInstance) .State, trong trường hợp đó tôi nghĩ có, vì phương thức Entity chỉ thêm nó vào biểu đồ với thay đổi trạng thái của nó (chưa sửa đổi) và sau đó bạn thay đổi trạng thái chỉ bằng tay thực thể, không phải thực thể của nó. – fbiagi

+0

Bạn đã xem nhận xét từ @MikeBrind về câu hỏi khác chưa? – Colin

1

Tôi vừa thử nghiệm điều này với EF 6, với các thực thể liên quan/thuộc tính điều hướng và trong cả hai trường hợp, các đối tượng được tạo giống nhau. Sự khác biệt duy nhất tôi nhận thấy là Add nhanh hơn khoảng 2 yếu tố. Dữ liệu của tôi có 1000 đối tượng cha, mỗi đối tượng có 5 đối tượng con với tổng số 6000 đối tượng được ghi vào DB .

Các vấn đề liên quan