C#Entity Framework延迟加载如果未分离

问题描述

| 我正在尝试对EntityFramework OnSave中的每个对象进行一些处理。此过程的一部分涉及将对象转换为Binary对象。永远需要序列化,而我大约99%的人认为这是因为我们在EntityFramework上使用了延迟加载,并且它正在捕获在PartialClasses中访问的延迟加载对象。 我尝试从ObjectContext分离对象,但是我的同事在整个应用程序中都使用了延迟加载,而没有先检查对象是否为NULL。 例如,在我们的部分类文件中有如下代码
get { return this.ContactsTable.FullName; }
只要未分离对象,该方法就可以正常工作。分离后,我会得到Null引用错误。 我的问题是这样的:我是否可以分离我的对象并让延迟加载不引发Null引用异常,或者我可以告诉DataContractSerializer忽略延迟加载的对象吗?     

解决方法

           我可以分开我的吗   对象并且没有延迟加载   空引用异常 没有。   我可以告诉   DataContractSerializer忽略懒惰   加载的对象 没有。 但是应该有简单的解决方案。当您要序列化实体时,请在附加实体的上下文中调用此方法:
// Turn off the lazy loading
context.ContextOptions.LazyLoadingEnabled = false;
// Run your serialization here
...
// Turn on the lazy loading again
context.ContextOptions.LazyLoadingEnabled = true;
但这很奇怪,因为序列化将尝试序列化所有已加载的实体,并且根据您的描述,您似乎永远都不知道对象图将被序列化的多少。 如果您真的只想保存单个对象,那么分离是可行的方法,但是它将破坏与其他对象的所有关系。