2011-08-25 81 views
12

我已經使用EntityFramework作爲我的項目中的ORM,並且在使用此技術時我沒有任何問題。我聽說EntityFramework創建了一個代理。我想知道這個ORM創建了什麼代理?它能做什麼?而且,當EF創建它時?換句話說,在ORM主題中經常使用的術語「代理」是什麼意思。EntityFramework中代理的含義是什麼?

任何幫助將有所幫助。

在此先感謝。

+1

EF並不總是創建代理。您可以關閉該功能,如果您急於加載,或者您對這些實體進行序列化(例如,在WCF中使用),則可能需要這樣做。 – Kit

+0

我接受了喬納斯提供的,但我想聽到更多來自所有專家。 – saber

回答

23

ORM世界中的代理是從您的域對象類型繼承的自動生成的類型。代理表示尚未填充來自數據庫的數據的實例,但僅知道其自己的ID。每當訪問映射到數據庫的屬性時,代理子類將從數據庫執行加載,以使加載對客戶端代碼透明。

代理通常在延遲加載的兩個實體之間有關係屬性時創建。例如。當您訪問user.Address屬性時,真正返回的是地址代理對象。只有當您訪問該對象的屬性(例如user.Address.StreetName)時,地址對象纔會被加載。

+0

謝謝喬納斯。 – saber