我正在尝试对我的EntityFramework OnSave中的每个对象执行一些处理。此过程的一部分涉及将对象转换为二进制对象。由于我们在EntityFramework上使用了延迟加载,并且它正在抓取在PartialClasses中访问的Lazy Loaded对象,因此它需要FOREVER进行序列化并且我大约99%肯定。
我尝试从ObjectContext中分离我的对象,但是我的同事在我们的应用程序中使用了Lazy Loading,而没有先检查对象是否为NULL。
例如,我们的Partial Classes文件中有这样的代码:
get { return this.ContactsTable.FullName; }
只要对象不是Detached,它就可以正常工作。一旦它被分离,我得到Null引用错误。
我的问题是:我是否可以分离我的对象并使Lazy Loading不抛出Null Reference异常,或者我可以告诉DataContractSerializer忽略Lazy Loaded对象吗?
答案 0 :(得分:4)
我有可能分开我的 对象并且懒惰加载而不是抛出 空引用异常
没有
我可以告诉你 DataContractSerializer忽略Lazy 加载的对象
没有
但应该有简单的解决方案。当您去序列化实体时,请在附加实体的上下文中调用它:
// Turn off the lazy loading
context.ContextOptions.LazyLoadingEnabled = false;
// Run your serialization here
...
// Turn on the lazy loading again
context.ContextOptions.LazyLoadingEnabled = true;
但它完全非常奇怪,因为序列化将尝试序列化所有已加载的实体,并且根据您的描述,您似乎永远不知道对象图的大部分将被序列化。
如果你真的只想保存单个对象,那么分离是可行的,但它会破坏与其他对象的所有关系。