2012-02-28 24 views
5

Có ai biết sự khác biệt, nếu có, trong các câu sau không?Sự khác nhau giữa hai câu lệnh này (Khung thực thể)

_context.AddObject(user); 

_context.Users.AddObject(user); 

cũng như

_context.Attach(user); 

_context.Users.Attach(user); 

Cảm ơn

EDIT

Xin lỗi một số nhầm lẫn:

Tôi biết sự khác biệt giữa AddObject và Đính kèm, những gì tôi có nghĩa là được là có bất kỳ sự khác biệt trong t ông cách bạn sử dụng AddObject ví dụ:

_context.AddObject(user); 
_context.Users.AddObject(user); 

Trả lời

1

Một ObjectContext có thể có nhiều tập hợp với cùng một lược đồ, vì vậy thường tốt hơn là sử dụng tập hợp rõ ràng. tức là _context.Users.AddObject(user);

Từ MSDN:

Trong phiên bản .NET Framework 4, chúng tôi khuyên bạn nên sử dụng phương pháp trên đối tượng ObjectSet để thực hiện tạo, đọc, xóa, đính kèm, và hoạt động cập nhật. ObjectSet xuất phát từ ObjectQuery, vì vậy nó cũng hoạt động như một đối tượng truy vấn.

Trong các phiên bản bắt đầu với phiên bản .NET Framework 4, bạn có thể sử dụng các phương pháp sau đây xác định trên ObjectSet thay vì những cái tương đương xác định trên ObjectContext:

AddObject 
Attach 
ApplyCurrentValues 
ApplyOriginalValues 
DeleteObject 
Detach 
0

MSDN answer

Tóm tắt:

AddObject bộ phản đối nhà nước để Added, Attach bộ nó để Unchanged. Nếu bạn gọi phương thức SaveChanges() sau đó, ngữ cảnh sẽ cố chèn một đối tượng được thêm bởi AddObject vào bộ nhớ, trong khi đối tượng được thêm bởi Attach sẽ được coi là không thay đổi và sẽ không có hành động nào được thực hiện cho nó.

0

Có sự khác biệt đơn giản vì ví dụ của bạn không đúng. Nó không phải là

context.AddObject(user) 

nhưng

context.AddObject("UserEntitySet", user) 

Nếu bạn sử dụng AddObject hoặc Attach trực tiếp trên bối cảnh mà bạn phải nói với bối cảnh mà thiết lập mà bạn muốn thêm hoặc đính kèm đối tượng của bạn để wheres nếu bạn sử dụng thực hiện trực tiếp trên ObjectSet nó đã có thông tin này được bao bọc theo cách mạnh mẽ.

IMHO những phương pháp này chỉ tồn tại dưới dạng tương thích ngược với EFv1 (.NET 3.5 SP1) trong đó ObjectSet không tồn tại.

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