/// <summary>
        /// single item insert with entity input
        /// </summary>
        /// <param name="input">to-be-inserted instance of entity class</param>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild Insert(MSBuildLogsExtended.DataSourceEntities.Build input)
        {
            log.Info(string.Format("{0}: Insert", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));
            MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild  _retval = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            _retval.OriginalValue = new MSBuildLogsExtended.DataSourceEntities.BuildCollection();
            _retval.OriginalValue.Add(input);

            if (input != null)
            {
                MSBuildLogsExtended.EntityFrameworkContext.Build _LinqItem = MSBuildLogsExtended.EntityContracts.IBuildHelper.Clone<MSBuildLogsExtended.DataSourceEntities.Build, MSBuildLogsExtended.EntityFrameworkContext.Build>(input);
                this.LinqContext.Build.Add(_LinqItem);
                this.LinqContext.SaveChanges();
                MSBuildLogsExtended.DataSourceEntities.Build _Result = new MSBuildLogsExtended.DataSourceEntities.Build();
                MSBuildLogsExtended.EntityContracts.IBuildHelper.Copy<MSBuildLogsExtended.EntityFrameworkContext.Build, MSBuildLogsExtended.DataSourceEntities.Build>(_LinqItem, _Result);
                _retval.Result = new MSBuildLogsExtended.DataSourceEntities.BuildCollection();
                _retval.Result.Add(_Result);
            }

            log.Info(string.Format("{0}: Insert", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
            return _retval;
        }
        /// <summary>
        /// Batches the update with entity collection input.
        /// </summary>
        /// <param name="input">The input.</param>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild BatchUpdate(MSBuildLogsExtended.DataSourceEntities.BuildCollection input)
        {
            log.Info(string.Format("{0}: BatchUpdate", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));

			MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild  _retval = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            _retval.OriginalValue = input;

            if (input != null)
            {
                List<MSBuildLogsExtended.EntityFrameworkContext.Build> _ListOfLinq = new List<MSBuildLogsExtended.EntityFrameworkContext.Build>();
                foreach (MSBuildLogsExtended.DataSourceEntities.Build _ItemOfInput in input)
                {
                    MSBuildLogsExtended.EntityFrameworkContext.Build _LinqItem = GetLinqObjectByIdentifier(_ItemOfInput);
                    MSBuildLogsExtended.EntityContracts.IBuildHelper.Copy<MSBuildLogsExtended.DataSourceEntities.Build, MSBuildLogsExtended.EntityFrameworkContext.Build>(_ItemOfInput, _LinqItem);
                    _ListOfLinq.Add(_LinqItem);
                }
                this.LinqContext.SaveChanges();

                for (int i = 0; i < input.Count; i++)
                {
                    MSBuildLogsExtended.EntityContracts.IBuildHelper.Copy
                        <
                            MSBuildLogsExtended.EntityFrameworkContext.Build, MSBuildLogsExtended.DataSourceEntities.Build
                        >(_ListOfLinq[i], input[i]);
                }
            }
            log.Info(string.Format("{0}: BatchUpdate", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
			return _retval;
        }
        /// <summary>
        /// The return value of this set of query is: <see cref="ASPNETDB_CACHE.DataSourceEntities.AspNet_SqlCacheTablesForChangeNotification"/>
        /// The key query criteria of this set of query is: Common. 
        /// Common query set is a built-in set of query criteria, which will query all foreign keys, string/text value, and range of datatime
        /// There are 7 methods, 1 internal, 2 private and 4 public, for one set of return value and query criteria:
        /// internal _GetQueryOfEntityOf...(...) gives the Linq Query 
        /// private _ExistsOfEntityOf...(...) returns true if there is any records meets Query Criteria, otherwise false
        /// private _GetCountOfEntityOf...(...) returns count if there is any records meets Query Criteria, otherwise 0
        /// public GetCountOfEntityOf...(...) returns count if there is any records meets Query Criteria, otherwise 0
        /// public ExistsOfEntityOf...(...) returns true if there is any records meets Query Criteria, otherwise false
        /// public GetSingleOfEntityOf...(...) returns the first record if there is any records meets Query Criteria, otherwise null
        /// *public GetCollectionOfEntityOf...(...) returns all records if there is any records meets Query Criteria, otherwise null
        /// </summary>
        /// <param name="currentIndex">current page index</param>
        /// <param name="pageSize">page size</param>
        /// <param name="queryOrderBySettingCollection">query OrderBy setting</param>
        /// <returns>result message with entity collection</returns>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild GetCollectionOfEntityOfCommon(
			Framework.EntityContracts.QuerySystemInt32EqualsCriteria criteriaOfIdOfSolution_S1_1OfCommonOfCommonOfCommon
			,Framework.EntityContracts.QuerySystemStringContainsCriteria criteriaOfNameOftOfCommonOfCommonOfCommon
			,Framework.EntityContracts.QuerySystemStringContainsCriteria criteriaOfDescriptionOftOfCommonOfCommonOfCommon
			,Framework.EntityContracts.QuerySystemDateTimeRangeCriteria criteriaOfBuildStartTimeOftOfCommonOfCommonOfCommon
			,int currentIndex
			,int pageSize
			,Framework.EntityContracts.QueryOrderBySettingCollection queryOrderBySettingCollection
			)
        {
            log.Info(string.Format("{0}: GetCollectionOfEntityOfCommon", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));

            MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild _retMessage = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            try
            {
                bool _Exists = _ExistsOfEntityOfCommon(
				criteriaOfIdOfSolution_S1_1OfCommonOfCommonOfCommon
				,criteriaOfNameOftOfCommonOfCommonOfCommon
				,criteriaOfDescriptionOftOfCommonOfCommonOfCommon
				,criteriaOfBuildStartTimeOftOfCommonOfCommonOfCommon
				,currentIndex
				,pageSize
				,queryOrderBySettingCollection
			);

                if (_Exists)
                {
                    IQueryable<MSBuildLogsExtended.DataSourceEntities.Build> _Query = _GetQueryOfEntityOfCommon(
				criteriaOfIdOfSolution_S1_1OfCommonOfCommonOfCommon
				,criteriaOfNameOftOfCommonOfCommonOfCommon
				,criteriaOfDescriptionOftOfCommonOfCommonOfCommon
				,criteriaOfBuildStartTimeOftOfCommonOfCommonOfCommon
				,queryOrderBySettingCollection
			);

                    IEnumerable<MSBuildLogsExtended.DataSourceEntities.Build> _retval;
					
					if (currentIndex == -1 || pageSize == -1)
					{
						_retval = _Query;
					}
					else
					{
						_retval = _Query.Skip(currentIndex).Take(pageSize);
					}
                    _retMessage.DataAccessLayerMessageStatus = Framework.DataSourceEntities.DataAccessLayerMessageStatus.Success;
                    _retMessage.Result = new MSBuildLogsExtended.DataSourceEntities.BuildCollection();
					_retMessage.Result.AddRange(_retval);
                }
                else
                {
                    _retMessage.DataAccessLayerMessageStatus = Framework.DataSourceEntities.DataAccessLayerMessageStatus.SuccessButNoResult;
                    _retMessage.Result = null;
                }
            }
            catch (Exception ex)
            {
                _retMessage.DataAccessLayerMessageStatus = Framework.DataSourceEntities.DataAccessLayerMessageStatus.Fail;
                _retMessage.Result = null;
                _retMessage.Message = ex.Message;
                log.Error(string.Format("{0}: GetCollectionOfEntityOfCommon", Framework.LoggingOptions.Data_Access_Layer_Process_Failed.ToString()), ex);
            }
            log.Info(string.Format("{0}: GetCollectionOfEntityOfCommon", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
            return _retMessage;
        }
        /// <summary>
        /// Batches insert with entity collection input.
        /// </summary>
        /// <param name="input">The input.</param>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild BatchInsert(MSBuildLogsExtended.DataSourceEntities.BuildCollection input)
        {
            log.Info(string.Format("{0}: BatchInsert", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));

			MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild  _retval = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            _retval.OriginalValue = input;

            if (input != null && input.Count > 0)
            {
                try
                {
                    DataTable _DataTable = new DataTable();
				_DataTable.Columns.Add("Id", typeof(System.Int64));
				_DataTable.Columns.Add("SolutionId", typeof(System.Int32));
				_DataTable.Columns.Add("Name", typeof(System.String));
				_DataTable.Columns.Add("Description", typeof(System.String));
				_DataTable.Columns.Add("BuildStartTime", typeof(System.DateTime));

                    foreach (MSBuildLogsExtended.DataSourceEntities.Build _Item in input)
                    {
                        _DataTable.Rows.Add(new object[] { _Item.Id, _Item.SolutionId, _Item.Name, _Item.Description, _Item.BuildStartTime });
                    }

                    using (SqlBulkCopy s = new SqlBulkCopy(this.LinqContext.Database.Connection.ConnectionString))
                    {
                        s.DestinationTableName = "dbo.Build";

					s.ColumnMappings.Add("Id", "Id");
					s.ColumnMappings.Add("SolutionId", "SolutionId");
					s.ColumnMappings.Add("Name", "Name");
					s.ColumnMappings.Add("Description", "Description");
					s.ColumnMappings.Add("BuildStartTime", "BuildStartTime");

                        s.NotifyAfter = 10000;
                        s.WriteToServer(_DataTable);
                        s.Close();
                    }
                }
                catch (Exception ex)
                {
                    log.Error(string.Format("{0}: Insert", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()), ex);
                }
            }
            log.Info(string.Format("{0}: BatchInsert", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
			return _retval;
        }
        /// <summary>
        /// Batches the delete with entity collection input.
        /// </summary>
        /// <param name="input">The input.</param>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild BatchDelete(MSBuildLogsExtended.DataSourceEntities.BuildCollection input)
        {
            log.Info(string.Format("{0}: BatchDelete", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));

			MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild  _retval = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            _retval.OriginalValue = input;

            if (input != null)
            {
                List<MSBuildLogsExtended.EntityFrameworkContext.Build> _ListOfLinq = new List<MSBuildLogsExtended.EntityFrameworkContext.Build>();
                foreach (MSBuildLogsExtended.DataSourceEntities.Build _ItemOfInput in input)
                {
                    MSBuildLogsExtended.EntityFrameworkContext.Build _LinqItem = GetLinqObjectByIdentifier(_ItemOfInput);	
					this.LinqContext.Build.Remove(_LinqItem);
                }
                this.LinqContext.SaveChanges();
            }
            log.Info(string.Format("{0}: BatchDelete", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
			return _retval;
        }
        /// <summary>
        /// single item delete by identifier with entity identifier input
        /// </summary>
        /// <param name="id">delete the item if its identifier equals to this parameter</param>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild DeleteByIdentifier(MSBuildLogsExtended.DataSourceEntities.BuildIdentifier id)
        {
            log.Info(string.Format("{0}: DeleteByIdentifier", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));
            
			MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild  _retval = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();

            if (id != null)
            {
                MSBuildLogsExtended.EntityFrameworkContext.Build _LinqItem = GetLinqObjectByIdentifier(id);
                if (_LinqItem != null)
                {
					MSBuildLogsExtended.DataSourceEntities.Build _Original = new MSBuildLogsExtended.DataSourceEntities.Build();
					MSBuildLogsExtended.EntityContracts.IBuildHelper.Copy<MSBuildLogsExtended.EntityFrameworkContext.Build, MSBuildLogsExtended.DataSourceEntities.Build>(_LinqItem, _Original);

					_retval.OriginalValue = new MSBuildLogsExtended.DataSourceEntities.BuildCollection();
					_retval.OriginalValue.Add(_Original);

                    this.LinqContext.Build.Remove(_LinqItem);
                    this.LinqContext.SaveChanges();
                }
            }
            log.Info(string.Format("{0}: DeleteByIdentifier", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
			return _retval;
        }
        /// <summary>
        /// single item update with entity input
        /// </summary>
        /// <param name="input">to-be-updated instance of entity class</param>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild Update(MSBuildLogsExtended.DataSourceEntities.Build input)
        {
            log.Info(string.Format("{0}: Update", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));
            MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild  _retval = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            _retval.OriginalValue = new MSBuildLogsExtended.DataSourceEntities.BuildCollection();
            _retval.OriginalValue.Add(input);

            if (input != null)
            {
                MSBuildLogsExtended.LinqToSqlContexts.Build _LinqItem = GetLinqObjectByIdentifier(input);
                if (_LinqItem != null)
                {
                    //MSBuildLogsExtended.EntityContracts.IBuildHelper.Copy<MSBuildLogsExtended.DataSourceEntities.Build, MSBuildLogsExtended.LinqToSqlContexts.Build>(input, _LinqItem);
                    _LinqItem.Id = input.Id;
                    _LinqItem.SolutionId = input.SolutionId;
                    _LinqItem.Name = input.Name;
                    _LinqItem.Description = input.Description;
                    _LinqItem.BuildStartTime = input.BuildStartTime;
                    this.LinqContext.SubmitChanges();
					MSBuildLogsExtended.DataSourceEntities.Build _Result = new MSBuildLogsExtended.DataSourceEntities.Build();
					MSBuildLogsExtended.EntityContracts.IBuildHelper.Copy<MSBuildLogsExtended.LinqToSqlContexts.Build, MSBuildLogsExtended.DataSourceEntities.Build>(_LinqItem, _Result);
					_retval.Result = new MSBuildLogsExtended.DataSourceEntities.BuildCollection();
					_retval.Result.Add(_Result);
                }
            }
            log.Info(string.Format("{0}: Update", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));
			return _retval;
        }
        /// <summary>
        /// The return value of this set of query is: <see cref="ASPNETDB_CACHE.DataSourceEntities.AspNet_SqlCacheTablesForChangeNotification"/>
        /// The key query criteria of this set of query is: Common. 
        /// Common query set is a built-in set of query criteria, which will query all foreign keys, string/text value, and range of datatime
        /// There are 7 methods, 1 internal, 2 private and 4 public, for one set of return value and query criteria:
        /// internal _GetQueryOfEntityOf...(...) gives the Linq Query 
        /// private _ExistsOfEntityOf...(...) returns true if there is any records meets Query Criteria, otherwise false
        /// private _GetCountOfEntityOf...(...) returns count if there is any records meets Query Criteria, otherwise 0
        /// public GetCountOfEntityOf...(...) returns count if there is any records meets Query Criteria, otherwise 0
        /// public ExistsOfEntityOf...(...) returns true if there is any records meets Query Criteria, otherwise false
        /// public GetSingleOfEntityOf...(...) returns the first record if there is any records meets Query Criteria, otherwise null
        /// *public GetCollectionOfEntityOf...(...) returns all records if there is any records meets Query Criteria, otherwise null
        /// </summary>
        /// <param name="currentIndex">current page index</param>
        /// <param name="pageSize">page size</param>
        /// <param name="queryOrderBySettingCollection">query OrderBy setting</param>
        /// <returns>result message with entity collection</returns>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild GetCollectionOfEntityOfByIdentifier(
			Framework.EntityContracts.QuerySystemInt64EqualsCriteria criteriaOfIdOftOfByIdentifierOfByIdentifierOfByIdentifier
			,int currentIndex
			,int pageSize
			,Framework.EntityContracts.QueryOrderBySettingCollection queryOrderBySettingCollection
			)
        {
            log.Info(string.Format("{0}: GetCollectionOfEntityOfByIdentifier", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));

            MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild _retMessage = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            try
            {
                bool _Exists = _ExistsOfEntityOfByIdentifier(
				criteriaOfIdOftOfByIdentifierOfByIdentifierOfByIdentifier
				,currentIndex
				,pageSize
				,queryOrderBySettingCollection
			);

                if (_Exists)
                {
                    IQueryable<MSBuildLogsExtended.DataSourceEntities.Build> _Query = _GetQueryOfEntityOfByIdentifier(
				criteriaOfIdOftOfByIdentifierOfByIdentifierOfByIdentifier
				,queryOrderBySettingCollection
			);

                    IEnumerable<MSBuildLogsExtended.DataSourceEntities.Build> _retval;
					
					if (currentIndex == -1 || pageSize == -1)
					{
						_retval = _Query;
					}
					else
					{
						_retval = _Query.Skip(currentIndex).Take(pageSize);
					}
                    _retMessage.DataAccessLayerMessageStatus = Framework.DataSourceEntities.DataAccessLayerMessageStatus.Success;
                    _retMessage.Result = new MSBuildLogsExtended.DataSourceEntities.BuildCollection();
					_retMessage.Result.AddRange(_retval);

                    _retMessage.QueryPagingResult = new Framework.EntityContracts.QueryPagingResult
                    {
                        RecordCountOfCurrentPage = _retval.Count(),
                        CountOfRecords = _Query.Count(),
                        CurrentIndexOfStartRecord = currentIndex,
                        PageSize = pageSize,
                    };
                }
                else
                {
                    _retMessage.DataAccessLayerMessageStatus = Framework.DataSourceEntities.DataAccessLayerMessageStatus.SuccessButNoResult;
                    _retMessage.Result = null;
                }
            }
            catch (Exception ex)
            {
                _retMessage.DataAccessLayerMessageStatus = Framework.DataSourceEntities.DataAccessLayerMessageStatus.Fail;
                _retMessage.Result = null;
                _retMessage.Message = ex.Message;
                log.Error(string.Format("{0}: GetCollectionOfEntityOfByIdentifier", Framework.LoggingOptions.Data_Access_Layer_Process_Failed.ToString()), ex);
            }
            log.Info(string.Format("{0}: GetCollectionOfEntityOfByIdentifier", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
            return _retMessage;
        }
        /// <summary>
        /// Batches insert with entity collection input.
        /// </summary>
        /// <param name="input">The input.</param>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild BatchInsert(MSBuildLogsExtended.DataSourceEntities.BuildCollection input)
        {
            log.Info(string.Format("{0}: BatchInsert", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));
            #region insert row-by-row to be removed

/*

            if (input != null)
            {
                List<MSBuildLogsExtended.LinqToSqlContexts.Build> _ListOfLinq = MSBuildLogsExtended.EntityContracts.IBuildHelper.CloneCollection
                    <
                        MSBuildLogsExtended.DataSourceEntities.BuildCollection, List<MSBuildLogsExtended.LinqToSqlContexts.Build>,
                        MSBuildLogsExtended.DataSourceEntities.Build, MSBuildLogsExtended.LinqToSqlContexts.Build
                    >(input);
                this.LinqContext.Build.InsertAllOnSubmit<MSBuildLogsExtended.LinqToSqlContexts.Build>(_ListOfLinq);
                this.LinqContext.SubmitChanges();
                for (int i = 0; i < input.Count; i++)
                {
                    MSBuildLogsExtended.EntityContracts.IBuildHelper.Copy
                        <
                            MSBuildLogsExtended.LinqToSqlContexts.Build, MSBuildLogsExtended.DataSourceEntities.Build
                        >(_ListOfLinq[i], input[i]);
                }
            }

*/

            #endregion insert row-by-row to be removed

			MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild  _retval = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            _retval.OriginalValue = input;

            if (input != null && input.Count > 0)
            {
                try
                {
                    DataTable _DataTable = new DataTable();
				_DataTable.Columns.Add("Id", typeof(System.Int64));
				_DataTable.Columns.Add("SolutionId", typeof(System.Int32));
				_DataTable.Columns.Add("Name", typeof(System.String));
				_DataTable.Columns.Add("Description", typeof(System.String));
				_DataTable.Columns.Add("BuildStartTime", typeof(System.DateTime));

                    foreach (MSBuildLogsExtended.DataSourceEntities.Build _Item in input)
                    {
                        _DataTable.Rows.Add(new object[] { _Item.Id, _Item.SolutionId, _Item.Name, _Item.Description, _Item.BuildStartTime });
                    }

                    using (SqlBulkCopy s = new SqlBulkCopy(this.LinqContext.Connection.ConnectionString))
                    {
                        s.DestinationTableName = "dbo.Build";

					s.ColumnMappings.Add("Id", "Id");
					s.ColumnMappings.Add("SolutionId", "SolutionId");
					s.ColumnMappings.Add("Name", "Name");
					s.ColumnMappings.Add("Description", "Description");
					s.ColumnMappings.Add("BuildStartTime", "BuildStartTime");

                        s.NotifyAfter = 10000;
                        s.WriteToServer(_DataTable);
                        s.Close();
                    }
                }
                catch (Exception ex)
                {
                    log.Error(string.Format("{0}: Insert", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()), ex);
                }
            }
            log.Info(string.Format("{0}: BatchInsert", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
			return _retval;
        }
        /// <summary>
        /// single item deletion with entity input
        /// </summary>
        /// <param name="input">item to be deleted</param>
        public MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild Delete(MSBuildLogsExtended.DataSourceEntities.Build input)
        {
            log.Info(string.Format("{0}: Delete", Framework.LoggingOptions.Data_Access_Layer_Process_Started.ToString()));

            MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild  _retval = new MSBuildLogsExtended.DataSourceEntities.DataAccessLayerMessageOfEntityCollectionBuild();
            _retval.OriginalValue = new MSBuildLogsExtended.DataSourceEntities.BuildCollection();
            _retval.OriginalValue.Add(input);

            if (input != null)
            {
                MSBuildLogsExtended.LinqToSqlContexts.Build _LinqItem = GetLinqObjectByIdentifier(input);
                if (_LinqItem != null)
                {
                    this.LinqContext.Build.DeleteOnSubmit(_LinqItem);
                    this.LinqContext.SubmitChanges();
                }
            }
            log.Info(string.Format("{0}: Delete", Framework.LoggingOptions.Data_Access_Layer_Process_Ended.ToString()));
			return _retval;
        }