public static long insObject(
			string sessionGuid_in,
			string ip_forLogPurposes_in, 

			SO_NWS_Attachment attachment_in,
			SO_DIC__TextLanguage[] tx_Name_in,
			SO_DIC__TextLanguage[] tx_Description_in,

			bool selectIdentity_in, 

			out string guid_out, 

			out int[] errors_out
		) {
			guid_out = "";
			long _output = -1L;

			Guid _sessionguid;
			Sessionuser _sessionuser;

			#region check...
			List<int> _errorlist;
			if (!check(
				sessionGuid_in,
				ip_forLogPurposes_in, 

				ref attachment_in, 

				out _sessionguid,
				out _sessionuser,
				out _errorlist
			)) {
				errors_out = _errorlist.ToArray();
				return _output;
			} 
			#endregion
			#region check Existence . . .
			if (
				(attachment_in.IFContent <= 0)
				||
				!DO_NWS_Content.isObject(attachment_in.IFContent)
			) {
				_errorlist.Add(ErrorType.data__not_found);
				errors_out = _errorlist.ToArray();
				return _output;
			}
			#endregion

			// ToDos: here! should mark Content to be re-Approved!
			// ToDos: here! or not allow if no approve permition

			attachment_in.GUID
				= guid_out
				= Guid.NewGuid().ToString("N");
			attachment_in.OrderNum = DateTime.Now.Ticks;

			Exception _exception = null;
			#region DBConnection _con = DO__utils.DBConnection_createInstance(...);
			DBConnection _con = DO__utils.DBConnection_createInstance(
				DO__utils.DBServerType,
				DO__utils.DBConnectionstring,
				DO__utils.DBLogfile
			); 
			#endregion
			try {
				//if (
				//    (
				//        (tx_Name_in != null) 
				//        && 
				//        (tx_Name_in.Length != 0)) 
				//    ||
				//    (
				//        (tx_Description_in != null) 
				//        && 
				//        (tx_Description_in.Length != 0)
				//    )
				//) {
				_con.Open();
				_con.Transaction.Begin();
				//}

				#region content_in.TX_Name = ...;
				if (
					(tx_Name_in == null)
					||
					(tx_Name_in.Length == 0)
				) {
					attachment_in.TX_Name_isNull = true;
				} else {
					attachment_in.TX_Name = SBO_DIC_Dic.insObject(
						_con,

						_sessionuser.IDApplication,
						OGen.NTier.Kick.lib.businesslayer.shared.TableFieldSource.NWS_ATTACHMENT__TX_NAME,

						tx_Name_in
					);
				}
				#endregion
				#region content_in.TX_Description = ...;
				if (
					(tx_Description_in == null)
					||
					(tx_Description_in.Length == 0)
				) {
					attachment_in.TX_Description_isNull = true;
				} else {
					attachment_in.TX_Description = SBO_DIC_Dic.insObject(
						_con,

						_sessionuser.IDApplication,
						OGen.NTier.Kick.lib.businesslayer.shared.TableFieldSource.NWS_ATTACHMENT__TX_DESCRIPTION,

						tx_Description_in
					);
				}
				#endregion

				_output = DO_NWS_Attachment.insObject(
					attachment_in,
					selectIdentity_in,

					_con
				);
				_errorlist.Add(ErrorType.news__attachment__successfully_created__WARNING);

				#region _con.Transaction.Commit();
				if (
					_con.isOpen
					&&
					_con.Transaction.inTransaction
				) {
					_con.Transaction.Commit();
				}
				#endregion
			} catch (Exception _ex) {
				#region _con.Transaction.Rollback();
				if (
					_con.isOpen
					&&
					_con.Transaction.inTransaction
				) {
					_con.Transaction.Rollback();
				}
				#endregion

				_exception = _ex;
			} finally {
				#region _con.Transaction.Terminate(); _con.Close(); _con.Dispose();
				if (_con.isOpen) {
					if (_con.Transaction.inTransaction) {
						_con.Transaction.Terminate();
					}
					_con.Close();
				}

				_con.Dispose();
				#endregion
			}
			if (_exception != null) {
				#region SBO_LOG_Log.Log(ErrorType.data);
				OGen.NTier.Kick.lib.businesslayer.SBO_LOG_Log.log(
					_sessionuser,
					LogType.error,
					ErrorType.data,
					-1L, 
					_sessionuser.IDApplication,
					"{0}",
					new string[] {
			            _exception.Message
			        }
				);
				#endregion
				_errorlist.Add(ErrorType.data);
			}

			errors_out = _errorlist.ToArray();
			return _output;
		} 
		public static void updObject(
			string sessionGuid_in,
			string ip_forLogPurposes_in, 

			SO_NWS_Attachment attachment_in,
			SO_DIC__TextLanguage[] tx_Name_in,
			SO_DIC__TextLanguage[] tx_Description_in,

			out int[] errors_out
		) {
			Guid _sessionguid;
			Sessionuser _sessionuser;

			#region check...
			List<int> _errorlist;
			if (!check(
				sessionGuid_in,
				ip_forLogPurposes_in,

				ref attachment_in,

				out _sessionguid,
				out _sessionuser,
				out _errorlist
			)) {
				errors_out = _errorlist.ToArray();
				return;
			}
			#endregion

			#region check existence . . .
			SO_NWS_Attachment _attachment;
			if (
				attachment_in.IDAttachment <= 0
				||
				(
					(_attachment = DO_NWS_Attachment.getObject(
						attachment_in.IDAttachment
					)) == null
				)
			) {
				_errorlist.Add(ErrorType.data__not_found);
				errors_out = _errorlist.ToArray();
				return;
			}
			#endregion

			// ToDos: here! should mark Content to be re-Approved!
			// ToDos: here! or not allow if no approve permition

			Exception _exception = null;
			#region DBConnection _con = DO__utils.DBConnection_createInstance(...);
			DBConnection _con = DO__utils.DBConnection_createInstance(
				DO__utils.DBServerType,
				DO__utils.DBConnectionstring,
				DO__utils.DBLogfile
			); 
			#endregion
			try {
				_con.Open();
				_con.Transaction.Begin();

				#region TX_Name . . .
				if ((tx_Name_in != null) && (tx_Name_in.Length != 0)) {
					if (_attachment.TX_Name_isNull) {
						_attachment.TX_Name = SBO_DIC_Dic.insObject(
							_con,
							_sessionuser.IDApplication,
							OGen.NTier.Kick.lib.businesslayer.shared.TableFieldSource.NWS_ATTACHMENT__TX_NAME,
							tx_Name_in
						);
					} else {
						SBO_DIC_Dic.updObject(
							_con,
							_attachment.TX_Name,
							tx_Name_in
						);
					}
				}
				#endregion
				#region TX_Description . . .
				if ((tx_Description_in != null) && (tx_Description_in.Length != 0)) {
					if (_attachment.TX_Description_isNull) {
						_attachment.TX_Description = SBO_DIC_Dic.insObject(
							_con,
							_sessionuser.IDApplication,
							OGen.NTier.Kick.lib.businesslayer.shared.TableFieldSource.NWS_ATTACHMENT__TX_DESCRIPTION,
							tx_Description_in
						);
					} else {
						SBO_DIC_Dic.updObject(
							_con,
							_attachment.TX_Description,
							tx_Description_in
						);
					}
				}
				#endregion

				//_attachment.??? = attachment_in.???;
				DO_NWS_Attachment.updObject(
					_attachment,
					true,

					_con
				);
				_errorlist.Add(ErrorType.news__attachment__successfully_updated__WARNING);

				#region _con.Transaction.Commit();
				if (
					_con.isOpen
					&&
					_con.Transaction.inTransaction
				) {
					_con.Transaction.Commit();
				}
				#endregion
			} catch (Exception _ex) {
				#region _con.Transaction.Rollback();
				if (
					_con.isOpen
					&&
					_con.Transaction.inTransaction
				) {
					_con.Transaction.Rollback();
				}
				#endregion

				_exception = _ex;
			} finally {
				#region _con.Transaction.Terminate(); _con.Close(); _con.Dispose();
				if (_con.isOpen) {
					if (_con.Transaction.inTransaction) {
						_con.Transaction.Terminate();
					}
					_con.Close();
				}

				_con.Dispose();
				#endregion
			}
			if (_exception != null) {
				#region SBO_LOG_Log.Log(ErrorType.data);
				OGen.NTier.Kick.lib.businesslayer.SBO_LOG_Log.log(
					_sessionuser,
					LogType.error,
					ErrorType.data,
					-1L, 
					_sessionuser.IDApplication,
					"{0}",
					new string[] {
			            _exception.Message
			        }
				);
				#endregion
				_errorlist.Add(ErrorType.data);
			}

			errors_out = _errorlist.ToArray();
		}
		public void Bind() {
			int[] _errors;
			SO_vNWS_Tag[] _tags;
			if (
				#region ((_tags = ...) != null)
				(IDTag > 0)
				&&
				(
					(_tags = BusinessInstances.NWS_Tag.InstanceClient.getRecord_byTag(
						utils.User.SessionGuid,
						utils.ClientIPAddress,
						IDTag,
						0, 0, 
						out _errors
					))
					!=
					null
				)
				&&
				!Master__base.Error_add(_errors)
				&&
				(_tags.Length != 0)
				#endregion
			) {
				#region dic_Name.Texts = ...;
				List<OGen.NTier.Kick.lib.datalayer.shared.structures.SO_DIC__TextLanguage> _name
					= new List<OGen.NTier.Kick.lib.datalayer.shared.structures.SO_DIC__TextLanguage>(
						_tags.Length
					);

				SO_DIC__TextLanguage[] _texts = new SO_DIC__TextLanguage[_tags.Length];
				foreach (SO_vNWS_Tag _tag in _tags) {
					_name.Add(new SO_DIC__TextLanguage(
						_tag.IDLanguage,
						_tag.ShortName
					));
				}
				dic_Name.Texts = _name.ToArray();
				#endregion
				#region ddl_Tag_parent.SelectedValue = _tags[0].IFTag__parent.ToString();
				if (_tags[0].IFTag__parent_isNull) {
					ddl_Tag_parent.SelectedValue = "";
				} else {
					ddl_Tag_parent.SelectedValue = _tags[0].IFTag__parent.ToString();
				}
				#endregion
			} else {
				dic_Name.Texts = null;
				ddl_Tag_parent.SelectedValue = "";
			}
		}