 		
 		private function setIdFields():void
 		{
+			// if deprecated idFields state has been set to an array, ignore server setting
+			if (_overrideIdFields && _overrideIdFields.getSessionState())
+				return;
 			var info:Object = _service.getServerInfo();
-			idFields.setSessionState(info ? info['idFields'] as Array : null);
+			_idFields.setSessionState(info ? info['idFields'] as Array : null);
 		}
 		
 		/**

		/**
		 * This is an Array of public metadata field names that should be used to uniquely identify columns when querying the server.
		 */
		private const idFields:LinkableVariable = registerLinkableChild(this, new LinkableVariable(Array, verifyStringArray));
		
		public function get entityCache():EntityCache
		{

			const SQLPARAMS:String = 'sqlParams';
			var params:Object = getMetadata(proxyColumn, [ENTITY_ID, ColumnMetadata.MIN, ColumnMetadata.MAX, SQLPARAMS], false);
			var query:AsyncToken;
			var idFieldsArray:Array = _idFields.getSessionState() as Array;
			
			if (idFieldsArray || params[ENTITY_ID])
			{
				var id:Object = idFieldsArray ? getMetadata(proxyColumn, idFieldsArray, true) : StandardLib.asNumber(params[ENTITY_ID]);
				var sqlParams:Array = WeaveAPI.CSVParser.parseCSVRow(params[SQLPARAMS]);
				query = _service.getColumn(id, params[ColumnMetadata.MIN], params[ColumnMetadata.MAX], sqlParams);
			}
