Пример #1
0
        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);
                    }
                }
            }
        }
Пример #2
0
        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);
        }