簡體   English   中英

C# 實體框架延遲加載(如果未分離)

[英]C# Entity Framework lazy loading if not detached

我正在嘗試對我的 EntityFramework OnSave 中的每個 object 執行一些處理。 此過程的一部分涉及將 object 轉換為二進制 object。 序列化需要 FOREVER,我 99% 的肯定是因為我們在 EntityFramework 上使用延遲加載,並且它正在抓取在 PartialClasses 中訪問的延遲加載對象。

我嘗試將我的 object 從 ObjectContext 中分離出來,但我的同事在我們的應用程序中使用了延遲加載,而沒有首先檢查 object 是否為 NULL。

例如,我們的 Partial Classes 文件中有這樣的代碼:
get { return this.ContactsTable.FullName; }
只要 object 沒有分離,它就可以正常工作。 一旦它被分離,我就會得到 Null 參考錯誤。

我的問題是:我是否可以分離我的 object 並且延遲加載不會拋出 Null 引用異常,或者我是否可以告訴 DataContractSerializer 忽略延遲加載的對象?

我是否可以分離我的 object 並且延遲加載不拋出 Null 參考異常

不。

我是否可以告訴 DataContractSerializer 忽略延遲加載的對象

不。

但應該有簡單的解決方案。 當您 go 序列化實體時,請在附加實體的上下文中調用:

// Turn off the lazy loading
context.ContextOptions.LazyLoadingEnabled = false;
// Run your serialization here
...
// Turn on the lazy loading again
context.ContextOptions.LazyLoadingEnabled = true;

但這很奇怪,因為序列化會嘗試序列化所有加載的實體,並且根據您的描述,您似乎永遠不知道 object 圖的大部分將被序列化。

如果您真的只想保存單個 object 分離是 go 的方法,但它會破壞與其他對象的所有關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM