我剛剛與一位同事討論Entity Framework更改跟蹤。我們終於想通了,我的上下文接口應該有實體框架跟蹤的開銷是多少?
IDBSet<MyPoco> MyThings { get; }
而不是
IQueryable<MyPoco> MyThings { get; }
,我的POCO也應該有它的所有屬性virtual
。
使用調試器,我們可以看到跟蹤對象,並且結果還包含代表我的實際POCO的代理。
如果我沒有我的POCO屬性virtual
和使用IQueryable<>
代替IDbSet<>
有我的上下文接口我沒有得到任何的。
在這個例子中,我只查詢數據庫,但將來會希望通過實體框架來更新數據庫。
因此,爲了使我的生活在將來以這種代碼作爲參考時變得更加簡單,在我將永遠不會使用它們的情況下,跟蹤信息/代理在那裏有任何性能損失嗎?
我實際上有一個接口,我編寫了我的linq查詢使用IQueryable <>。我在該接口的實現中也有IDBSet <>屬性,這些屬性作爲IQueryable返回。 –
感謝您澄清延遲加載功能,我沒有考慮。 –