EF inserting values in table failed after some time

Executing EF related changes in a manually initiated thread is not a good idea. Try to run the EF changes in the same thread. If you are bothered with processing incoming requests, use Async, and Await feature. I have modified your code to accommodate this feature. Please try this.

private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
    int bytes = port.BytesToRead;
    //string indata = sp.ReadExisting();

    try
    {
        receivedBytes = port.BaseStream.Read(buffer, 0, (int)buffer.Length);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message.ToString());
    }

    var receiveData = BitConverter.ToString(buffer, 0, receivedBytes);
    var finalData = receiveData.Replace("-", "");

    Console.WriteLine("Thread Going to Start");

    SaveDataAsync(finalData).Wait(); // this call will become sync and runs under main thread.

    port.DiscardOutBuffer(); 
    port.DiscardInBuffer();
}

public async Task<bool> SaveDataAsync(string finalData)
{
mdc_dbEntities e = new mdc_dbEntities();

            var msn = e.mdc_meter_config.Where(m => m.m_hex == sr).Select(s => new { s.msn, s.p_id, s.meter_id }).ToList();

    var H = finalData.Substring(0, 2);
var isSaveSuccess = false;
    using (mdc_dbEntities u = new mdc_dbEntities())
    {
        foreach (var res in msn)
        {
            var cust_id = e.mdc_meter_cust_rel.Where(m => m.msn == res.msn)
                                              .Select(s => s.cust_id)
                                              .FirstOrDefault();

            mdc_meters_data data = new mdc_meters_data()
                    {
                        msn = res.msn,
                        cust_id = cust_id,
                        device_id = res.meter_id.ToString(),
                        kwh = e_val.ToString(),
                        voltage_p1 = a_vol_val.ToString(),
                        voltage_p2 = b_vol_val.ToString(),
                        voltage_p3 = c_vol_val.ToString(),
                        current_p1 = a_curr_val.ToString(),
                        current_p2 = b_curr_val.ToString(),
                        current_p3 = c_curr_val.ToString(),
                        data_date_time = Convert.ToDateTime(theDate.ToString(format)),
                        d_type = d_type.ToString(),
                        pf1 = a_pf_val.ToString(),
                        pf2 = b_pf_val.ToString(),
                        pf3 = c_pf_val.ToString(),
                        p_id = res.p_id,
                    };
            u.mdc_meters_data.Add(data);
        }

       isSaveSuccess = (await u.SaveChangesAsync())>0; // if records inserted, the count will be more than 0
    }

   return isSaveSuccess;
}

}