[x]
Posted via EE Mobile

Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again.

Question
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

9.2

A circular reference was detected while serializing an object of type Divisions

Asked by nkkarn in Programming for ASP.NET, Web Frameworks, MVC

Tags: NHibernate, MVC

I have MVC application which uses NHibernate.It has BDivision class with mathod GetAllDivision in business layer and it returns IList<Divisions>.  I want to make ajax call which should return json object of Divisions.  here is my code for ajax call.

public JsonResult test() {
            IList<Divisions> dv;
            BDivison od = new BDivison();
            dv = od.GetAllDivision();          
            return Json(dv);
      }
From firebug response, I get the following error.
A circular reference was detected while serializing an object of type Divisions.
Anybody know what is the problem BTW I am using NHibernate 2.0, MVC  with VS 2008.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
Here  is my Divisions Class 
/*
Created using Microdesk MyGeneration NHibernate Template v1.1
[based on MyGeneration/Template/NHibernate (c) by Sharp 1.4]
*/
using System;
using System.Collections;
using System.Collections.Generic;
 
namespace IIIS.DataTransfer
{
 
	/// <summary>
	/// IDivisions interface for NHibernate mapped table 'DIVISIONS'.
	/// </summary>
	public interface IDivisions
	{
		#region Public Properties
		
		int DivisionId
		{
			get ;
			set ;
			  
		}
		
		string Name
		{
			get ;
			set ;
			  
		}
		
		MastersystemCollection FkMastersystemDivisions_MastersystemCollection
		{
			get ;
			set ;
		}
		
		
		IList<Mastersystem> FkMastersystemDivisions
		{
			get ;
			set ;
			  
		}
		
		SecurityCollection FkSecurityDivisions_SecurityCollection
		{
			get ;
			set ;
		}
		
		
		IList<Security> FkSecurityDivisions
		{
			get ;
			set ;
			  
		}
		
		bool IsDeleted { get; set; }
		bool IsChanged { get; set; }
		
		#endregion 
	}
 
	/// <summary>
	/// Divisions object for NHibernate mapped table 'DIVISIONS'.
	/// </summary>
	[Serializable]
	public partial class Divisions : IDivisions
	{
		#region Member Variables
 
		protected int _divisionid;
		protected string _name;
		protected IList<Mastersystem> _fkmastersystemdivisions;
		protected IList<Security> _fksecuritydivisions;
		protected bool _bIsDeleted;
		protected bool _bIsChanged;
		#endregion
		
		#region Constructors
		public Divisions() {}
			
		public Divisions(string pName)
		{
			this._name = pName; 
		}
				
		public Divisions(int pDivisionId)
		{
			this._divisionid = pDivisionId; 
		}
		
		#endregion
		
		#region Public Properties
		
		public virtual int DivisionId
		{
			get { return _divisionid; }
			set { _bIsChanged |= (_divisionid != value); _divisionid = value; }
			
		}
		
		public virtual string Name
		{
			get { return _name; }
			set 
			{
			  if (value != null && value.Length > 50)
			    throw new ArgumentOutOfRangeException("Name", "Name value, cannot contain more than 50 characters");
			  _bIsChanged |= (_name != value); 
			  _name = value; 
			}
			
		}
		
		public virtual MastersystemCollection FkMastersystemDivisions_MastersystemCollection
		{
			get { MastersystemCollection col = new MastersystemCollection( _fkmastersystemdivisions ); _fkmastersystemdivisions = col.GetList(); return col; }
			set { _bIsChanged |= (_fkmastersystemdivisions != value); _fkmastersystemdivisions = value.GetList(); }
		}
		
		[System.Xml.Serialization.XmlIgnore]
		public virtual IList<Mastersystem> FkMastersystemDivisions
		{
			get { return _fkmastersystemdivisions; }
			set { _bIsChanged |= (_fkmastersystemdivisions != value); _fkmastersystemdivisions = value; }
			
		}
		
		public virtual SecurityCollection FkSecurityDivisions_SecurityCollection
		{
			get { SecurityCollection col = new SecurityCollection( _fksecuritydivisions ); _fksecuritydivisions = col.GetList(); return col; }
			set { _bIsChanged |= (_fksecuritydivisions != value); _fksecuritydivisions = value.GetList(); }
		}
		
		[System.Xml.Serialization.XmlIgnore]
		public virtual IList<Security> FkSecurityDivisions
		{
			get { return _fksecuritydivisions; }
			set { _bIsChanged |= (_fksecuritydivisions != value); _fksecuritydivisions = value; }
			
		}
		
 
		public virtual bool IsDeleted
		{
			get
			{
				return _bIsDeleted;
			}
			set
			{
				_bIsDeleted = value;
			}
		}
		
		public virtual bool IsChanged
		{
			get
			{
				return _bIsChanged;
			}
			set
			{
				_bIsChanged = value;
			}
		}
		
		#endregion 
		
		#region Equals And HashCode Overrides
		/// <summary>
		/// local implementation of Equals based on unique value members
		/// </summary>
		public override bool Equals( object obj )
		{
			if( this == obj ) return true;
			Divisions castObj = null;
			try
			{
				castObj = (Divisions)obj;
			} catch(Exception) { return false; } 
			return ( castObj != null ) &&
				( this._divisionid == castObj.DivisionId );
		}
		/// <summary>
		/// local implementation of GetHashCode based on unique value members
		/// </summary>
		public override int GetHashCode()
		{
		  
			
			int hash = 57; 
			hash = 27 * hash * _divisionid.GetHashCode();
			return hash; 
		}
		#endregion
				
		#region Public Property and Mapping Constants
 
		//Nested class to provide strongly-typed access to property names (for .NET databinding, etc.)
		public static class PropertyNames
		{
			public const string Divisions = "Divisions";			
			public const string DivisionId = "DivisionId";			
			public const string Name = "Name";
			public const string FkMastersystemDivisions_MastersystemCollection = "FkMastersystemDivisions_MastersystemCollection";			
			public const string FkMastersystemDivisions = "FkMastersystemDivisions";
			public const string FkSecurityDivisions_SecurityCollection = "FkSecurityDivisions_SecurityCollection";			
			public const string FkSecurityDivisions = "FkSecurityDivisions";			
		}
		
		//Nested class to provide strongly-typed access to mapping names (for NHibernate Queries, etc.)
		public static class MappingNames
		{
			public const string Divisions = "Divisions";			
			public const string DivisionId = "DivisionId";			
			public const string Name = "Name";
			public const string FkMastersystemDivisions_MastersystemCollection = "FkMastersystemDivisions_MastersystemCollection";			
			public const string FkMastersystemDivisions = "FkMastersystemDivisions";
			public const string FkSecurityDivisions_SecurityCollection = "FkSecurityDivisions_SecurityCollection";			
			public const string FkSecurityDivisions = "FkSecurityDivisions";			
		}
 
		#endregion
		
		
	}
	
	#region Custom ICollection interface for Divisions 
 
	
	public interface IDivisionsCollection : ICollection
	{
		Divisions this[int index]{	get; set; }
		void Add(Divisions pDivisions);
		void Clear();
	}
	
	[Serializable]
	public class DivisionsCollection : IDivisionsCollection
	{
		private IList<Divisions> _arrayInternal;
 
		public DivisionsCollection()
		{
			_arrayInternal = new List<Divisions>();
		}
		
		public DivisionsCollection( IList<Divisions> pSource )
		{
			_arrayInternal = pSource;
			if(_arrayInternal == null)
			{
				_arrayInternal = new List<Divisions>();
			}
		}
 
		public Divisions this[int index]
		{
			get
			{
				return _arrayInternal[index];
			}
			set
			{
				_arrayInternal[index] = value;
			}
		}
 
		public int Count { get { return _arrayInternal.Count; } }
		public bool IsSynchronized { get { return false; } }
		public object SyncRoot { get { return _arrayInternal; } }
		public void CopyTo(Array array, int index){ _arrayInternal.CopyTo((Divisions[])array, index); }
		public IEnumerator GetEnumerator() { return _arrayInternal.GetEnumerator(); }
		public void Add(Divisions pDivisions) { _arrayInternal.Add(pDivisions); }
		public void Clear() { _arrayInternal.Clear(); }
		public IList<Divisions> GetList() { return _arrayInternal; }
	 
	
	#endregion
	
	}
}
======================================
Here is the XML mappings.
 
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="IIIS.DataTransfer.Divisions,IIIS.DataTransfer" table="`DIVISIONS`" lazy="true">
    <id name="DivisionId" column="`DIVISION_ID`" type="int">
      <generator class="native" />
    </id>
    <property type="string" not-null="true" length="50" name="Name" column="`NAME`" />
    <bag name="FkMastersystemDivisions" inverse="true" lazy="true" cascade="all">
      <key column="`DIVISION_ID`" />
      <one-to-many class="IIIS.DataTransfer.Mastersystem,IIIS.DataTransfer" />
    </bag>
    <bag name="FkSecurityDivisions" inverse="true" lazy="true" cascade="all">
      <key column="`DIVISION_ID`" />
      <one-to-many class="IIIS.DataTransfer.Security,IIIS.DataTransfer" />
    </bag>
  </class>
</hibernate-mapping>
[+][-]08/08/09 01:32 PM, ID: 25051600Accepted Solution

View this solution now by starting your 30-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

About this solution

Zones: Programming for ASP.NET, Web Frameworks, MVC
Tags: NHibernate, MVC
Sign Up Now!
Solution Provided By: abel
Participating Experts: 1
Solution Grade: A
 
[+][-]08/10/09 10:11 AM, ID: 25061797Author Comment

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 30-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]08/10/09 11:39 AM, ID: 25062656Expert Comment

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 30-day free trial to view this Expert Comment or ask the Experts your question.

 
 
Loading Advertisement...
20091111-EE-VQP-89 - Hierarchy / EE_QW_3_20080625