我已經使用EntityFramework作爲我的項目中的ORM,並且在使用此技術時我沒有任何問題。我聽說EntityFramework創建了一個代理。我想知道這個ORM創建了什麼代理?它能做什麼?而且,當EF創建它時?換句話說,在ORM主題中經常使用的術語「代理」是什麼意思。EntityFramework中代理的含義是什麼?
任何幫助將有所幫助。
在此先感謝。
我已經使用EntityFramework作爲我的項目中的ORM,並且在使用此技術時我沒有任何問題。我聽說EntityFramework創建了一個代理。我想知道這個ORM創建了什麼代理?它能做什麼?而且,當EF創建它時?換句話說,在ORM主題中經常使用的術語「代理」是什麼意思。EntityFramework中代理的含義是什麼?
任何幫助將有所幫助。
在此先感謝。
ORM世界中的代理是從您的域對象類型繼承的自動生成的類型。代理表示尚未填充來自數據庫的數據的實例,但僅知道其自己的ID。每當訪問映射到數據庫的屬性時,代理子類將從數據庫執行加載,以使加載對客戶端代碼透明。
代理通常在延遲加載的兩個實體之間有關係屬性時創建。例如。當您訪問user.Address
屬性時,真正返回的是地址代理對象。只有當您訪問該對象的屬性(例如user.Address.StreetName
)時,地址對象纔會被加載。
謝謝喬納斯。 – saber
見在本教程與代理類工作: http://www.asp.net/entity-framework/tutorials/advanced-entity-framework-scenarios-for-an-mvc-web-application
我知道在SO答案中,鏈接經常被忽視,但這是一個非常有用的教程。 – batpox
EF並不總是創建代理。您可以關閉該功能,如果您急於加載,或者您對這些實體進行序列化(例如,在WCF中使用),則可能需要這樣做。 – Kit
我接受了喬納斯提供的,但我想聽到更多來自所有專家。 – saber