2011-08-25 28 views
12

Tôi đã sử dụng EntityFramework làm ORM trong các dự án của mình và tôi không gặp bất kỳ vấn đề nào khi sử dụng công nghệ này. Tôi nghe EntityFramework tạo ra một proxy. Tôi muốn biết ORM này tạo ra proxy gì? Những gì nó làm? Và, khi EF tạo ra nó? Nói cách khác, ý nghĩa của thuật ngữ "proxy" thường được sử dụng trong các chủ đề ORM là gì.Ý nghĩa của proxy trong EntityFramework là gì?

Mọi trợ giúp đều hữu ích.

Cảm ơn trước.

+1

EF không luôn tạo proxy. Bạn có thể tắt tính năng này, mà bạn có thể muốn thực hiện nếu bạn mong muốn tải hoặc nếu bạn tuần tự hóa các thực thể (ví dụ: để sử dụng trong WCF). – Kit

+0

Tôi chấp nhận cung cấp bởi Jonas, Nhưng tôi muốn nghe nhiều hơn từ tất cả các chuyên gia. – saber

Trả lời

23

Một proxy trong thế giới ORM là loại được tạo tự động kế thừa từ loại đối tượng tên miền của bạn. Proxy đại diện cho một cá thể chưa được điền dữ liệu từ cơ sở dữ liệu, nhưng chỉ biết ID riêng của nó. Bất cứ khi nào một thuộc tính được ánh xạ tới cơ sở dữ liệu được truy cập, lớp con proxy sẽ thực hiện tải từ cơ sở dữ liệu, để tải là minh bạch cho mã máy khách.

Proxy thường được tạo khi bạn có thuộc tính mối quan hệ giữa hai thực thể được tải nhẹ nhàng. Ví dụ. khi bạn truy cập thuộc tính user.Address, những gì thực sự được trả về là một đối tượng Địa chỉ proxy. Chỉ khi bạn truy cập thuộc tính của đối tượng đó (ví dụ: user.Address.StreetName) thì đối tượng Địa chỉ phù hợp sẽ được tải.

+0

Cảm ơn bạn Jonas. – saber