问题描述
|
我正在尝试对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;
但这很奇怪,因为序列化将尝试序列化所有已加载的实体,并且根据您的描述,您似乎永远都不知道对象图将被序列化的多少。
如果您真的只想保存单个对象,那么分离是可行的方法,但是它将破坏与其他对象的所有关系。