繁体   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