Trong khi tìm kiếm các thực hành tốt nhất để thực hiện thao tác CRUD qua EF, tôi nhận thấy rằng bạn nên sử dụng các phương pháp Attach()
hoặc Find()
trước khi cập nhật một thực thể. Nó hoạt động tốt và theo tài liệu EF, các phương thức này lấy thực thể đến ngữ cảnh khá rõ ràng đối với tôi. Nhưng mã theo dõi đã nhầm lẫn tôi khá nhiềuTại sao nên sử dụng Đính kèm để cập nhật Entity Framework 6?
public void Update(object entity)
{
Record record = new Record() {
id = 1,
value = 5
};
using (SomeContext ctx = new SomeContext())
{
ctx.Entry(record).State = EntityState.Modified;
ctx.SaveChanges();
}
}
Giả sử chúng tôi có hồ sơ với id = 1 trong cơ sở dữ liệu. Trong điều kiện này, mã ở trên sẽ cập nhật bản ghi (đặt giá trị thành 5). Câu hỏi đặt ra là tại sao nó hoạt động? Và tại sao tôi nên sử dụng Attach()
?. Theo như tôi hiểu, hồ sơ không gắn liền với bối cảnh theo bất kỳ cách nào. Tôi đọc các chương có liên quan của this sách và the tutorial nhưng chúng sử dụng phương pháp tiếp cận 2 truy vấn. Ngoài ra tôi lướt SO nhưng không tìm thấy câu trả lời về câu hỏi của tôi. Giúp tôi với lời giải thích hoặc một số matherials tốt, xin vui lòng.
cảm ơn bạn, nhưng tại sao hồ sơ này hiện được theo dõi bởi ngữ cảnh? –
Nếu thực thể hiện được theo dõi và bạn thay đổi một số thuộc tính, trạng thái của thực thể phải thay đổi thành 'Đã sửa đổi' do thay đổi theo dõi, nhưng để thực thể của bạn phải đáp ứng [yêu cầu] này (https://msdn.microsoft.com/ vi/us/dd468057 (v = vs.100) .aspx) – octavioccl
Tôi nghĩ [link] này (https://www.safaribooksonline.com/library/view/programming-entity-framework/9781449331825/ch04s03.html) có thể trả lời tất cả các câu hỏi của bạn – octavioccl