WCF+Nhibernate循环引用导致序列化的问题

WCF+Nhibernate 在查询中只要涉及到表关联,都会存在一个循环引用而导致客户端不能反序列化的问题。

解决的办法:

1.多对一关联中,设置lazy="false".

2.一对多关联中,配置文件的属性使用bag类型,实体类中对应的属性为强类型的集合IList<类型>,而不能为弱类型IList,否则客户端反序列化生成的代码里面对应的属性为IList<Object>,造成客户端无法反序列化到对应的类型。

3.实体类的数据契约配置加上IsReference=true。

时间: 2024-10-27 00:59:56

WCF+Nhibernate循环引用导致序列化的问题的相关文章

python中循环引用导致内存泄漏小案例

首先定义一个Person类和一个Dog类,然后分别实例化对象p和d,给p对象添加一个pet属性 给d对象添加一个master属性此时Person和Dog的应用计数都为2,当del p 和del d后Person 和Dog的应用计数都为1,就造成了循环引用导致内存不能释放 最终导致内存泄漏. 以下图片是没有循环应用的代码执行结果 以下图片是循环引用后代码执行结果 原文地址:https://www.cnblogs.com/chen55555/p/11079223.html

关于json序列化循环引用导致出错

以下是错误信息: Caused by: java.lang.IllegalStateException: circular reference error  Offending field: methodAccessor Offending object: preserveType: false, type: interface sun.reflect.MethodAccessor, obj: [email protected]    at com.google.gson.CircularRef

简单聊一聊JS中的循环引用及问题

本文主要从 JS 中为什么会出现循环引用,垃圾回收策略中引用计数为什么有很大的问题,以及循环引用时的对象在使用 JSON.stringify 时为什么会报错,怎样解决这个问题简单谈谈自己的一些理解. 1. 什么是循环引用 当对象 1 中的某个属性指向对象 2,对象 2 中的某个属性指向对象 1 就会出现循环引用,(当然不止这一种情况,不过原理是一样的)下面通过代码和内存示意图来说明一下. function circularReference() { let obj1 = { }; let obj

block使用小结、在arc中使用block、如何防止循环引用

引言 使用block已经有一段时间了,感觉自己了解的还行,但是几天前看到CocoaChina上一个关于block的小测试主题 : [小测试]你真的知道blocks在Objective-C中是怎么工作的吗?,发现竟然做错了几道, 才知道自己想当然的理解是错误的,所以抽时间学习了下,并且通过一些测试代码进行测试,产生这篇博客. Block简介(copy一段) Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事.需要注意的是由于Objective-C在iOS中不支

objective-c启用ARC时的内存管理 (循环引用)

PDF版下载:http://download.csdn.net/detail/cuibo1123/7443125          在Objective-C中,内存的引用计数一直是一个让人比较头疼的问题.尤其是当引用计数涉及到arc.blocks等等的时候.似乎ARC的出现只是让我们解放了双手,由于底层实现依然依赖引用计数,所以开启ARC后,只有对引用计数机制更加了解,才能避免Cycle Retain.Crash等问题的出现. 但是由于使用ARC可以显著提高编码效率,所以建议尽量启用arc,本文

浅谈 关于ARC循环引用得问题

这段时间在研究关于ARC得循环引用导致变量不能释放,在此先介绍一本书英文书: <Pro Multithreading and Memory Management for iOS and OS X with ARC, Grand Central Dispatch, and Blocks> (<iOS与OS X多线程和内存管理>) 建议读英文原版,中文版看的我稀里糊涂的,后来被迫去看原版.这本书介绍了关于ARC的自动引用机制,这里的机制类似:当C语言的局部变量离开他的作用域之后就会被清

python各个模块循环引用问题解决办法

当项目中的模块过多,或功能划分不够清晰时会出现循环引用的问题,如下 有两个模块moduleA 和 moduleB: #moduleA from moduleB import b def a(): print 'aaaaaaaa' b() def c(): print 'cccc' if __name__ == '__main__': a() #moduleB from moduleA import c def b(): print 'bbbbbbbbbb' c() 这种情况下就会出现以下的错误

Wcf序列化的循环引用问题1

1.Wcf数据契约序列化,使用的类DataContractSerializer 默认如果类不指定[DataContract],则序列化类的所有字段,并且在出现循环引用的时候回抛出异常,服务终止 msdn文档说明:https://msdn.microsoft.com/library/system.runtime.serialization.datacontractserializer.aspx /* * Wcf 数据契约序列化使用“DataContractSerializer”,底层是xml序列化

EF实体类,设置导航属性,导致序列化时出现&quot;循环引用&quot;错误,及序列化时间格式解决方案

三个实体类,学生类(Student),班级类(StudentClass),年级类(Grade) 学生类与班级类为多对一的关系,班级表的主键为学生表的外键,年级表的主键为学生表的外键 public class Student { [Column("StudentId")] public int Id { get; set; } [Required] [StringLength(200)] public string _Name { get; set; } public int _Sex