public List <AcTransmissionLineCircuitForeign> ExtractAcTransLineCktForeign(string oracleConnString) { using (OracleConnection con = new OracleConnection(oracleConnString)) { using (OracleCommand cmd = con.CreateCommand()) { try { con.Open(); cmd.BindByName = true; cmd.CommandText = @"select ID, LINE_CIRCUIT_NAME, LINE_ID, CIRCUIT_NUMBER, LENGTH, FIRST_CHARGING_DATETIME, TRAIL_OPERATION_DATETIME, COMMISSIONING_DATETIME, COD_DATETIME, DECOMMISSIONING_DATETIME, THERMAL_LIMIT_MVA, SIL_MW from AC_TRANSMISSION_LINE_CIRCUIT where :id=1 and LINE_ID IS NOT NULL and ID IS NOT NULL and VOLTAGE_LEVEL IS NOT NULL and CIRCUIT_NUMBER IS NOT NULL"; // Assign id parameter OracleParameter id = new OracleParameter("id", 1); cmd.Parameters.Add(id); //Execute the command and use DataReader to display the data OracleDataReader reader = cmd.ExecuteReader(); List <AcTransmissionLineCircuitForeign> acTranLineCktsForeign = new List <AcTransmissionLineCircuitForeign>(); while (reader.Read()) { AcTransmissionLineCircuitForeign acTransLineCktForeign = new AcTransmissionLineCircuitForeign(); acTransLineCktForeign.WebUatId = reader.GetInt32(0); acTransLineCktForeign.Name = reader.GetString(1); acTransLineCktForeign.AcTransLineWebUatId = reader.GetInt32(2); acTransLineCktForeign.CktNumber = reader.GetInt32(3); acTransLineCktForeign.Length = reader.GetDecimal(4); acTransLineCktForeign.FtcDate = reader.GetDateTime(5); acTransLineCktForeign.TrialOperationDate = reader.GetDateTime(6); acTransLineCktForeign.CommDate = reader.GetDateTime(7); acTransLineCktForeign.CODDate = reader.GetDateTime(8); acTransLineCktForeign.DeCommDate = reader.GetDateTime(9); acTransLineCktForeign.ThermalLimitMVA = reader.GetDecimal(10); acTransLineCktForeign.SIL = reader.GetDecimal(11); acTranLineCktsForeign.Add(acTransLineCktForeign); } reader.Dispose(); return(acTranLineCktsForeign); } catch (Exception ex) { Console.WriteLine(ex.Message); return(null); } } } }
public async Task <AcTransLineCkt> LoadSingleAsync(WRLDCWarehouseDbContext _context, ILogger _log, AcTransmissionLineCircuitForeign acTrLineCktForeign, EntityWriteOption opt) { // check if entity already exists AcTransLineCkt existingAcTrLineCkt = await _context.AcTransLineCkts.SingleOrDefaultAsync(acCkt => acCkt.WebUatId == acTrLineCktForeign.WebUatId); // check if we should not modify existing entity if (opt == EntityWriteOption.DontReplace && existingAcTrLineCkt != null) { return(existingAcTrLineCkt); } // find the from AcTransmissionLine via FromSubstattion WebUatId int acTransLineWebUatId = acTrLineCktForeign.AcTransLineWebUatId; AcTransmissionLine acTrLine = await _context.AcTransmissionLines.SingleOrDefaultAsync(atl => atl.WebUatId == acTransLineWebUatId); // if AcTransmissionLine doesnot exist, skip the import. Ideally, there should not be such case if (acTrLine == null) { _log.LogCritical($"Unable to find AcTransmissionLine with webUatId {acTransLineWebUatId} while inserting AcTransLineCkt with webUatId {acTrLineCktForeign.WebUatId} and name {acTrLineCktForeign.Name}"); return(null); } // check if we have to replace the entity completely if (opt == EntityWriteOption.Replace && existingAcTrLineCkt != null) { _context.AcTransLineCkts.Remove(existingAcTrLineCkt); } // if entity is not present, then insert or check if we have to replace the entity completely if (existingAcTrLineCkt == null || (opt == EntityWriteOption.Replace && existingAcTrLineCkt != null)) { AcTransLineCkt newAcTrLineCkt = new AcTransLineCkt(); newAcTrLineCkt.Name = acTrLineCktForeign.Name; newAcTrLineCkt.AcTransmissionLineId = acTrLine.AcTransmissionLineId; newAcTrLineCkt.CktNumber = acTrLineCktForeign.CktNumber.ToString(); newAcTrLineCkt.CODDate = acTrLineCktForeign.CODDate; newAcTrLineCkt.CommDate = acTrLineCktForeign.CommDate; newAcTrLineCkt.DeCommDate = acTrLineCktForeign.DeCommDate; newAcTrLineCkt.FtcDate = acTrLineCktForeign.FtcDate; newAcTrLineCkt.Length = acTrLineCktForeign.Length; newAcTrLineCkt.SIL = acTrLineCktForeign.SIL; newAcTrLineCkt.ThermalLimitMVA = acTrLineCktForeign.ThermalLimitMVA; newAcTrLineCkt.TrialOperationDate = acTrLineCktForeign.TrialOperationDate; newAcTrLineCkt.WebUatId = acTrLineCktForeign.WebUatId; _context.AcTransLineCkts.Add(newAcTrLineCkt); await _context.SaveChangesAsync(); return(newAcTrLineCkt); } // check if we have to modify the entity if (opt == EntityWriteOption.Modify && existingAcTrLineCkt != null) { existingAcTrLineCkt.Name = acTrLineCktForeign.Name; existingAcTrLineCkt.AcTransmissionLineId = acTrLine.AcTransmissionLineId; existingAcTrLineCkt.CktNumber = acTrLineCktForeign.CktNumber.ToString(); existingAcTrLineCkt.CODDate = acTrLineCktForeign.CODDate; existingAcTrLineCkt.CommDate = acTrLineCktForeign.CommDate; existingAcTrLineCkt.DeCommDate = acTrLineCktForeign.DeCommDate; existingAcTrLineCkt.FtcDate = acTrLineCktForeign.FtcDate; existingAcTrLineCkt.Length = acTrLineCktForeign.Length; existingAcTrLineCkt.SIL = acTrLineCktForeign.SIL; existingAcTrLineCkt.ThermalLimitMVA = acTrLineCktForeign.ThermalLimitMVA; existingAcTrLineCkt.TrialOperationDate = acTrLineCktForeign.TrialOperationDate; await _context.SaveChangesAsync(); return(existingAcTrLineCkt); } return(null); }